[logback-user] Evaluator and Layout Pattern

ekkehard ekkehard at gentz-software.de
Tue Oct 14 18:48:26 CEST 2008


Ceki Gulcu schrieb:
> Hi Ekke,
>
> Here is the code for MarkerConverter:
>
> ======= Start MarkerConverter.hava ========
> package ch.qos.logback.classic.pattern;
>
> import org.slf4j.Marker;
>
> import ch.qos.logback.classic.spi.LoggingEvent;
>
> /**
>   * Return the event's marker value(s).
>   *
>   * @author Sébastien Pennec
>   */
> public class MarkerConverter extends ClassicConverter {
>
>    private static String EMPTY = "";
>
>    public String convert(LoggingEvent le) {
>      Marker marker = le.getMarker();
>      if (marker == null) {
>        return EMPTY;
>      } else {
>        return marker.toString();
>      }
>    }
> }
> ======= End   MarkerConverter.hava ========
>
> Studying the code above, I would say that you have two options. First,
> just remove the [] from the conversion pattern. So instead of writing
>
> "%d %level [%marker] - %msg%n"
>
> as you conversion pattern, just write
>
> "%d %level %marker - %msg%n"
>
> You second option is to write your own converter for handling
> markers. You could modify it to return an empty string if there is no
> marker, and to return "["+marker.toString()+"]" if there is a marker
> in the event. Here is sample code:
>
> package de.gentz-software.logback;
>
> import org.slf4j.Marker;
> import ch.qos.logback.classic.spi.LoggingEvent;
>
> public class MyMarkerConverter extends ClassicConverter {
>
>    private static String EMPTY = "";
>
>    public String convert(LoggingEvent le) {
>      Marker marker = le.getMarker();
>      if (marker == null) {
>        return EMPTY;
>      } else {
>        return "["+marker.toString()+"]";
>      }
>    }
> }
>
>
> You also need to let logback know about your conversion word. Here is
> how:
>
>    <conversionRule conversionWord="myMarker"
>             converterClass="de.gentz-software.logback.MyMarkerConverter"/>
>
> Here is a sample config file:
>
> <configuration>
>    <conversionRule conversionWord="myMarker"
>            converterClass="de.gentz-software.logback.MyMarkerConverter" />
> 	
>    <appender name="STDOUT"
>      class="ch.qos.logback.core.ConsoleAppender">
>      <layout class="ch.qos.logback.classic.PatternLayout">
>        <Pattern>%-4relative [%thread] %myMarker - %msg%n</Pattern>
>      </layout>
>    </appender>
>
>    <root>
>      <level value="debug" />
>      <appender-ref ref="STDOUT" />
>    </root>
> </configuration>
>
>
> I hope this helps,
>
>   

of course - thanks :-)

...gives me some more ideas how to solve it best to print OSGI 
bundle-name and service-name
I put into the Marker-tree

ekke


More information about the Logback-user mailing list