Yes. The Appenders tag inside the ScriptSelector are the Appenders that are to be created. But now that I think about it, we can’t use “Appenders” for this. If you look at the RoutingAppender you will notice that Appenders there are declared under a Route element. The Route plugin is defined with deferChildren=true. This means that whatever is configured under the Route will not be created during initial configuration. Instead the Route keeps a reference to the Node and then configures the Appender when it is required. So we would need a new plugin to wrap the Appenders that are to be created.
Ralph > On Sep 11, 2016, at 11:10 AM, Gary Gregory <garydgreg...@gmail.com> wrote: > > Are the <Appenders> tags really meant to be nested? > > Gary > > On Sat, Sep 10, 2016 at 11:48 AM, Ralph Goers <ralph.go...@dslextreme.com > <mailto:ralph.go...@dslextreme.com>> wrote: > Oops. I forgot the closing CDATA tag in the script. > > Ralph > >> On Sep 10, 2016, at 11:43 AM, Ralph Goers <ralph.go...@dslextreme.com >> <mailto:ralph.go...@dslextreme.com>> wrote: >> >> Interesting. OS/390. I worked on MVS, OS/370, z/OS, etc many moons ago but >> haven’t worked on a mainframe since 2001. >> >> This sort of sounds like you want an Appender Selector, which would be an >> Appender that uses a Selector to figure out which Appender to delegate to. >> This is a bit like the PatternSelector. I would imagine it would make sense >> to implement AppenderSelectors and LayoutSelectors. You probably would want >> to dynamically initialize the Appenders much like the RoutingAppender does. >> >> Maybe it would look like: >> >> <Appenders> >> <ScriptSelector name=“" default=“”> >> <Script language=“groovy”><![CDATA[ >> if (System.getProperty”os.name >> <http://os.name/>”).contains(“OS/390”)) then { >> return “Socket”; >> } else { >> return “File”; >> } >> </Script> >> <Appenders> >> <SocketAppender name=“Socket” …/> >> <FileAppender name=“File” …/> >> </Appenders> >> </ScriptSelector> >> </Appenders> >> >> The thing is that this script would run every time the Selector was accessed >> while it sounds like you would only want the script to run when the Selector >> is initialized. We could do that too but the script would need to be >> declared in a property that would only be used when the selector is >> initialized. I would want to support being able to do both. >> >> Ralph >> >>> On Sep 10, 2016, at 11:04 AM, Gary Gregory <garydgreg...@gmail.com >>> <mailto:garydgreg...@gmail.com>> wrote: >>> >>> <Appenders> >>> <ScriptTest language="JavaScript"> >>> <If>System.getProperty("os.name >>> <http://os.name/>").contains("OS/390")</If> >>> <True> >>> <SocketAppender ...> >>> </True> >>> <False> >>> <FileAppender ...> >>> </False> >>> </ScriptTest> >>> </Appenders> >>> >>> ? >>> >>> >>> On Sat, Sep 10, 2016 at 10:40 AM, Gary Gregory <garydgreg...@gmail.com >>> <mailto:garydgreg...@gmail.com>> wrote: >>> OK, I found >>> https://logging.apache.org/log4j/2.x/manual/configuration.html#Scripts >>> <https://logging.apache.org/log4j/2.x/manual/configuration.html#Scripts> >>> and I think I could use either: >>> >>> - Use composite configurations: One file for OS/390, one for all other OSs; >>> or >>> - Do it all in one configuration file (that seems simpler) >>> >>> It seems like there are some pieces missing to do what I want conveniently. >>> >>> Should I define all appenders in <Appenders> and later use a script to only >>> add the one(s) I want in the <Root> section? >>> >>> Or, should the <Appenders> section itself be scripted to only add the >>> appenders I want? >>> >>> Since I expect the OS/390 appender will likely blow up running on a >>> different OK I do not want to create it unless I know it can run OK. >>> >>> I guess then I have a conditional section in both the Appenders and in the >>> Root section so that when I say <AppenderRef =...> we do not go look for an >>> appender that is not defined. >>> >>> Thoughts? >>> >>> A narrow solution would be to add an "os" attribute to all appenders but >>> that seems lame. os="OS/390" and os="!OS/390" means also knowing about >>> "not", yikes. >>> >>> Gary >>> >>> On Sat, Sep 10, 2016 at 10:05 AM, Gary Gregory <garydgreg...@gmail.com >>> <mailto:garydgreg...@gmail.com>> wrote: >>> Hi, >>> >>> I can't seem to find on our site the scripting support that was recently >>> added (or is that only in master?). >>> >>> What I need to do is only add a specific appender when running on a >>> specific OS (USS on OS/390 if you must know). Then only add a different >>> appender when not running on that OS. >>> >>> I'd rather not have to hard-code this and make thing more complicated. >>> >>> Thoughts? >>> >>> Gary >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>> Spring Batch in Action <http://www.manning.com/templier/> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>> Spring Batch in Action <http://www.manning.com/templier/> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >>> ggreg...@apache.org <mailto:ggreg...@apache.org> >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>> Spring Batch in Action <http://www.manning.com/templier/> >>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> >>> Home: http://garygregory.com/ <http://garygregory.com/> >>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> > > > > > -- > E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | > ggreg...@apache.org <mailto:ggreg...@apache.org> > Java Persistence with Hibernate, Second Edition > <http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> > Home: http://garygregory.com/ <http://garygregory.com/> > Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>