I see.

For what it's worth, I like the embedded script idea. It seems like it
could be very powerful.


On Mon, Sep 12, 2016 at 12:11 AM, Gary Gregory <[email protected]>
wrote:

> On Sep 10, 2016 11:33 PM, "Ralph Goers" <[email protected]>
> 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 <[email protected]> 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 <[email protected]> wrote:
> >>
> >>> Oops. I forgot the closing CDATA tag in the script.
> >>>
> >>> Ralph
> >>>
> >>>> On Sep 10, 2016, at 11:43 AM, Ralph Goers <[email protected]>
> 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 <[email protected]>
> 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 <
> [email protected]> 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 <
> [email protected]> 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: [email protected] | [email protected]
> >>>>>>> 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: [email protected] | [email protected]
> >>>>>> 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: [email protected] | [email protected]
> >>>>> 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
> >>>>
> >>>>
> >>>
> >
>

Reply via email to