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> 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> > 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”).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> wrote: > > <Appenders> > <ScriptTest language="JavaScript"> > <If>System.getProperty("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> > wrote: > >> OK, I found https://logging.apache.org/log4j/2.x/manual/configurat >> ion.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> >> 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 | 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 >>> Home: http://garygregory.com/ >>> Tweet! http://twitter.com/GaryGregory >>> >> >> >> >> -- >> E-Mail: garydgreg...@gmail.com | 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 >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> > > > > -- > E-Mail: garydgreg...@gmail.com | 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 > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > > > > -- E-Mail: garydgreg...@gmail.com | 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 Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory