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>

Reply via email to