[logback-user] LocLoggers and TurboFilters

ceki ceki at qos.ch
Sun Jun 10 21:50:21 CEST 2012


Hi Dario,

There is a bug in org.slf4j.ext.LoggerWrapper which LogLogger
extends. The methods taking a Marker as first argument, invoke
isInfoEnabled() instead of inInfoEnabled(marker). For example, the
code currently reads:

   public void info(Marker marker, String msg) {
    if (!logger.isInfoEnabled())
       return;
     if (instanceofLAL) {
       ((LocationAwareLogger) logger).log(marker, fqcn,
           LocationAwareLogger.INFO_INT, msg, null, null);
     } else {
       logger.info(marker, msg);
     }
   }

instead of

   public void info(Marker marker, String msg) {
    if (!logger.isInfoEnabled(marker))
       return;
     if (instanceofLAL) {
       ((LocationAwareLogger) logger).log(marker, fqcn,
           LocationAwareLogger.INFO_INT, msg, null, null);
     } else {
       logger.info(marker, msg);
     }
   }

The Please file bug report so that this issue can be tracked. You can
file the bug report in logback or slf4j (the bug is actually in
slf4j-ext).

Sorry for the inconvenience,
-- 
Ceki
http://twitter.com/#!/ceki

On 10.06.2012 11:21, Dario Campagna wrote:
> Hi Ceki,
>
>> Could you provide a code sample of how you invoke a LocLogger with a marker?
>
> Sure! The following class shows how I use a LocLogger to generate a logging request with a marker.
>
> public class LocLoggerTest {
>
> 	public static void main(String[] args) {
>
> 		IMessageConveyor mc = new MessageConveyor(Locale.getDefault());
> 		
> 		LocLoggerFactory llFactory_default = new LocLoggerFactory(mc);
> 		
> 		LocLogger locLogger = llFactory_default.getLocLogger("defaultLocLogger");
> 		
> 		Marker alwaysMarker = MarkerFactory.getMarker("ALWAYS");
> 		
> 		locLogger.info(alwaysMarker,"This will always appear.");
> 		
> 		locLogger.info("Hello!");
> 		
> 	}
>
> }
>
> A simple configuration file to test it is
>
> <configuration debug="true">
>
> 	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
> 		<encoder>
> 			<pattern>%level - %date - %marker - %msg%n</pattern>
> 		</encoder>
> 	</appender>
> 	
> 	<turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter">
> 		<Marker>ALWAYS</Marker>
> 		<OnMatch>ACCEPT</OnMatch>
> 		<OnMismatch>NEUTRAL</OnMismatch>
> 	</turboFilter>
> 	
> 	<logger name="defaultLocLogger" level="INFO">
> 		<appender-ref ref="STDOUT" />
> 	</logger>
>
> </configuration>
>
> When I change the logger level to a value grater than INFO, the logging request marked ALWAYS is not enabled.
>
>
> Cheers,
> Dario



More information about the Logback-user mailing list