But Gary said he didn’t want the OS390 appender created unless he is running on OS390.
But your example makes me think we also need an AppenderRef Selector. Ralph > On Sep 10, 2016, at 5:28 PM, Remko Popma <remko.po...@gmail.com> wrote: > > What you can also do (without Log4j enhancements) is create a plugin appender > that takes two Appender-Refs and delegates to the correct one for your > application. > > In configuration this could look like this: > > <Appenders> > <FileAppender name="unix" ... > <FileAppender name="OS390" ... > > <MyDelegatingAppender name="delegator"> > <AppenderRef ref="unix" /> > <AppenderRef ref="OS390" /> > </MyDelegatingAppender> > > Remko > > Sent from my iPhone > > On 2016/09/11, at 3:48, 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”).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> >>