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