[logback-user] Setting custom Profiler log level.

ceki ceki at qos.ch
Tue Dec 27 12:07:28 CET 2011


Hi César,

My response is inline.

On 27.12.2011 10:19, César Álvarez Núñez wrote:
> Hi all,
>
> Our application makes an intensive use of Profiler
> (http://www.slf4j.org/extensions.html#profiler).
> It has been very useful during the development stage an we would like to
> keep it at production stage but there is a problem since its "log level"
> is hard-coded to "debug".
>
> Currently the profiler use the same application class logger so if log
> level is set to "info" in our production environment we lose the
> "profiler" log :-(
>
> Alternatives:
>
>   * Use different loggers for application and profiler >-->> It requires
>     to refactoring all the code and remember that any new Profiler that
>     will be used need to set a custom logger instead of the default
>     class logger.
>
>   * Open a request to modify Profiler in order to set a custom log level.

This makes sense. See first if the TurboFilter described below
approach works for you. Otherwise, please file a bug report requesting
for this feature.

>   * Keep minimum log level to "debug" and make use of a Filter to accept
>     any log event with marker=PROFILER, otherwise only accept if log
>     level >= INFO >-->> It only will work with LogBack but Profiler
>     belongs to SLF4J so it should work with any bridge.

Have you considered using a TurboFilter [1]? Here is a TurboFilter
which will enable profiler logs for all logging levels.

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.turbo.TurboFilter;
import ch.qos.logback.core.spi.FilterReply;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;

public class ProfilingEnabler extends TurboFilter {

  Marker profilerMarker =
            MarkerFactory.getMarker(Profiler.PROFILER_MARKER_NAME);

  @Override
  public FilterReply decide(Marker marker, Logger logger, Level level,
                            String format, Object[] params, Throwable t){
     if(marker == profilerMarker)   return FilterReply.ACCEPT;
     else return FilterReply.NEUTRAL;
   }
}

[1] http://logback.qos.ch/manual/filters.html#TurboFilter

> /César.

Cheers,
-- 
Ceki
http://twitter.com/#!/ceki


More information about the Logback-user mailing list