logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: OS-based dynamic configuration file
Date Sun, 11 Sep 2016 15:11:18 GMT
On Sep 10, 2016 11:33 PM, "Ralph Goers" <ralph.goers@dslextreme.com> wrote:
>
> But Gary said he didn’t want the OS390 appender created unless he is
running on OS390.

Right, IRL, I am going to use an Appender that does some JNI calls that
will only work on OS/390.

Gary

>
> But your example makes me think we also need an AppenderRef Selector.
>
> Ralph
>
>> On Sep 10, 2016, at 5:28 PM, Remko Popma <remko.popma@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.goers@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.goers@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 <garydgregory@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 <garydgregory@gmail.com>
wrote:
>>>>>>
>>>>>> OK, I found
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 <
garydgregory@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: garydgregory@gmail.com | ggregory@apache.org
>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>> JUnit in Action, Second Edition
>>>>>>> Spring Batch in Action
>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>> Home: http://garygregory.com/
>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> E-Mail: garydgregory@gmail.com | ggregory@apache.org
>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>> JUnit in Action, Second Edition
>>>>>> Spring Batch in Action
>>>>>> Blog: http://garygregory.wordpress.com
>>>>>> Home: http://garygregory.com/
>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> E-Mail: garydgregory@gmail.com | ggregory@apache.org
>>>>> Java Persistence with Hibernate, Second Edition
>>>>> JUnit in Action, Second Edition
>>>>> Spring Batch in Action
>>>>> Blog: http://garygregory.wordpress.com
>>>>> Home: http://garygregory.com/
>>>>> Tweet! http://twitter.com/GaryGregory
>>>>
>>>>
>>>
>

Mime
View raw message