One option is to create a custom Log4j2 Filter. Your custom Filter would only be "active" if it detects it's in the correct environment, otherwise it would return NEUTRAL from all `filter(...)` methods.
CompositeFilter is final so you can't subclass it but perhaps you can create a wrapper instead. Here is a link to the manual page that explains how to implement Log4j2 plugins: http://logging.apache.org/log4j/2.x/manual/plugins.html This section is specifically about implementing custom filters: http://logging.apache.org/log4j/2.x/manual/extending.html#Filters You probably want to subclass AbstractFilter rather than implementing the Filter interface from scratch: https://github.com/apache/logging-log4j2/blob/master/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilter.java Sent from my iPhone > On Feb 27, 2017, at 21:00, Mahler, Stefan <stefan.mah...@icongmbh.de> wrote: > > Hello, > > we want replace our legacy proprietary logging framework. > > One important feature of our current logging framework is the so called > 'profile controlled filtering'. > There exist different filtering profiles like 'production', 'test' or > 'development'. The profile to use > is selected by a system property named 'STAGE'. > Each filtering profile has its filter combination: > * production: Log level is ERROR or higher, except, if marker is HEARTBEAT, > then the log level should be INFO or higher. > * test: Log level is WARNING or higher, except if marker is one of > [HEARTBEAT, DB], then the log level is DEBUG or higher. > * development: Log level is INFO, except if marker is one of [HEARTBEAT, DB, > ENTRY]. > Additionally there is a default filter combination. Default filter > combination is used if STAGE is unknown or no STAGE is defined. > > A single filter combination can be defined with CompositeFilter. E.g. for the > production profile the follow CompositeFilter can be used: > <Filters> > <ThresholdFilter level="INFO" onMatch="NEUTRAL" onMismatch="DENY" /> > <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="NEUTRAL" /> > <MarkerFilter marker="HEARTBEAT" onMatch="ACCEPT" onMismatch="DENY" /> > </Filters> > > > But how can I select the profile (this means here the CompositeFilter) by > System-Lookup? > Is there any recommended way for profile controlling? > > For all profiles the same appenders are used. The only difference is the > filter combination. > > Thanks a lot! > Stefan Mahler > > > > -- > Stefan Mahler http://www.icongmbh.de > Application Development > icon Systemhaus GmbH Tel. +49 711 806098-167 > Hauptstätter Straße 70 > 70178 Stuttgart Fax. +49 711 806098-299 > > > Geschäftsführer: Uwe Seltmann, Andreas Schwegler > HRB Stuttgart 17655 > USt-IdNr.: DE 811944121 > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > For additional commands, e-mail: log4j-user-h...@logging.apache.org >