Hello, Thank you for your replies. Don't get me wrong. The markers and marker filters themselves work. However, my point was that the method Logger#isEnabled(Level level, Marker marker) only checks if the logger is enabled for the level and not the marker.
Minimal example: package com.ezakus.log; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.MarkerManager; public class LoggerWithMarkerTest { private static Logger logger = LogManager.getLogger(LoggerWithMarkerTest.class.getName()); private static final Marker markerOne = MarkerManager.getMarker("marker_one"); public static void main(String[] args) { if (logger.isInfoEnabled(markerOne)) { System.out.println("Activated!"); logger.info(markerOne, "We are logging!"); } } } with configuration: <?xml version="1.0" encoding="UTF-8"?> <Configuration status="DEBUG" monitorInterval="10"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <!-- <MarkerFilter marker="marker_one" onMatch="DENY" onMismatch="NEUTRAL"/> --> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %marker - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> </Root> <Logger name="com.ezakus.log.LoggerWithMarkerTest" level="info" additivity="false"> <MarkerFilter marker="marker_one" onMatch="DENY" onMismatch="NEUTRAL"/> <AppenderRef ref="Console"/> </Logger> </Loggers> </Configuration> The behaviour I expect with that configuration is that the condition in the code evaluates to false. However, it only ever evalu On 23 June 2015 at 15:42, Ralph Goers <ralph.go...@dslextreme.com> wrote: > I’m surprised that case isn’t working for you. Looking at the code leads > me to believe it should but I will have to test it myself to see what is > going on. That could take a few days. > > Ralph > > > On Jun 22, 2015, at 5:22 AM, David KOCH <dk...@ezakus.com> wrote: > > > > Hello, > > > > Is there any way to programatically determine if a logger is enabled for > a > > specific log level and marker? If so how? There is a > Logger#isEnabled(Level > > level, Marker marker) method but it seems it ignores the marker argument. > > > > I would like to avoid carrying out relatively expensive operations > required > > for preparing the log message when it's not required. The alternative, > > implementing Message#getFormattedMessage would be quite clumsy in this > case > > so I'd like to be able to pre-check based on marker and log level > instead. > > > > I did like this in the log4j.xml: > > > > <Logger name="com.xxxxx.rtb.log.LoggingBidInterceptor" level="info" > > additivity="false"> > > <MarkerFilter marker="bid_req_proto" onMatch="DENY" > onMismatch="DENY"/> > > <AppenderRef ref="Console"/> > > <AppenderRef ref="KafkaBidRequest" level="info"/> > > <AppenderRef ref="KafkaBidResponse" level="off"/> > > </Logger> > > > > but logger.isInfoEnabled(MarkerManager.getMarker("bid_req_proto")) > > evaluates to to "true" whatever way I set up the MarkerFilter. > > > > Regards, > > > > /David > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > For additional commands, e-mail: log4j-user-h...@logging.apache.org > >