[logback-user] Evaluator and Layout Pattern
ekkehard
ekkehard at gentz-software.de
Wed Oct 15 16:59:48 CEST 2008
Ceki,
just tried my custom MarkerConverter
but I got an error:
ERROR in ch.qos.logback.core.pattern.parser.Compiler at 26312 -
[bundlemarker] is not a valid conversion word
---------
from my config file:
...
<conversionRule conversionWord="bundlemarker"
converterClass="org.ekkehard.logback.util.BundleMarkerConverter"/>
...
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} %-5level [%logger{40}] %bundlemarker
%msg%n</Pattern>
</layout>
</appender>
-----
perhaps the problem is that my BundleMarkerConverter class was not found -
all runs under OSGI
what do you think - should I add the import to logback core or logback
classic ?
or could something else be wrong because the error notes that the
conversion word wasn't valid
and not that class BundleMarkerConverter wasn't found
thanks
ekke
ekkehard schrieb:
> 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
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://qos.ch/pipermail/logback-user/attachments/20081015/720d7900/attachment.htm
More information about the Logback-user
mailing list