On Sat, Sep 15, 2018 at 4:43 PM Gary Gregory <garydgreg...@gmail.com> wrote:

> On Sat, Sep 15, 2018 at 4:40 PM Ralph Goers <ralph.go...@dslextreme.com>
> wrote:
>
>> If you don’t want to log anything then enable a noop appender that just
>> returns without doing anything
>>
>
> Oh, I see we already have a NullAppender...
>

So I can do:

<ScriptAppenderSelector name="SelectIt">
      <Script language="JavaScript"><![CDATA[
        ##SPECIAL_THING##]]>
      </Script>
      <AppenderSet>
        <RollingFileAppender name="MyAppender" ... />
        <Null/>
      </AppenderSet>
    </ScriptAppenderSelector>

Not quite as simple as:

<RollingFileAppender name="MyAppender" enable="##SPECIAL_THING##" ... />

I often times have to walk our users through some configs so option 2 is
simpler for them and less error prone... but option 1 will work for now...

Gary


>
> Gary
>
>
>>
>> Sent from my iPhone
>>
>> > On Sep 15, 2018, at 12:34 PM, Gary Gregory <garydgreg...@gmail.com>
>> wrote:
>> >
>> > On Sat, Sep 15, 2018 at 3:24 PM Ralph Goers <ralph.go...@dslextreme.com
>> >
>> > wrote:
>> >
>> >> We have an appended selector for this. Why not us it?
>> >>
>> >
>> > Hi,
>> >
>> > Because:
>> > - Conceptually, I am not selecting an appender out of a set, I want the
>> one
>> > appender enabled or disabled.
>> > - In practice, using a ScriptAppenderSelector with a single Appender
>> means
>> > my script would have to 'select' a non-existing appender when the script
>> > evaluates to false, which would work BUT would emit an ERROR log event
>> to
>> > the status logger like "No node named DISABLE_ME in
>> > NameOfScriptAppenderSelector". This would be a normal configuration, so
>> an
>> > ERROR would be very bad for our users. Changing the level of event would
>> > not help, unless it was buried at the DEBUG level, which is not good for
>> > the current use cases.
>> > - Alternatively, we could have add a NoOpAppender which I would then
>> select
>> > when I want the file appender disabled. This would imply accepting the
>> > added costs, no matter how minor in memory and speed.
>> >
>> > Thoughts?
>> >
>> > Gary
>> >
>> >
>> >>
>> >> Sent from my iPhone
>> >>
>> >>> On Sep 15, 2018, at 11:07 AM, Gary Gregory <garydgreg...@gmail.com>
>> >> wrote:
>> >>>
>> >>> Hi All:
>> >>>
>> >>> At work, we have an installer program that installs one of five log4j
>> >>> configs depending on what the user selects in a UI. Each of these 5
>> >> configs
>> >>> causes log events to end up in different kinds of SQL and NoSQL
>> >> databases,
>> >>> you pick one when you install. The installer does a brute force search
>> >> and
>> >>> replace in the log4j file to replace markers with things like
>> database IP
>> >>> addresses and port numbers. So far so simple and good.
>> >>>
>> >>> The next iteration of the installer provides an additional choice to
>> log
>> >> to
>> >>> a file or not, in addition of one of the 5 databases.
>> >>>
>> >>> Option 1?
>> >>> In order to avoid having 5x2 preset config files in the installer, I'd
>> >> like
>> >>> to add the file config to each of the existing 5 configurations and
>> have
>> >>> the file appender enabled or not based on a boolean flag that the
>> >> installer
>> >>> can implement as part of its search and replace. You'd end up with:
>> >>>
>> >>> <AppenderRef ref="foo" enabled="true|false" />
>> >>> <AppenderFoo enabled="true|false" />
>> >>>
>> >>> If an appender is disabled it does not end up in the Log4j object
>> tree at
>> >>> all. It is like it never existed in the config file.
>> >>>
>> >>> Option 2?
>> >>> Add a second log4j2.xml, say log4j2-rollingfile.xml config file and
>> have
>> >>> Log4j combine it with the other log4j.xml on the class path. How?
>> >>>
>> >>> Other options?
>> >>>
>> >>> Thank you,
>> >>> Gary
>> >>
>> >>
>>
>>
>>

Reply via email to