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>
>> 

Reply via email to