[logback-dev] Possible problem with markers...

Joern Huxhorn jhuxhorn at bpinteractive.com
Thu Apr 12 15:35:50 CEST 2007


Hi guys.

I did a quick'n'dirty conversion of  Chainsaw to support LOGBack- 
instead of Log4J-Events.
It works but I think I might have found a problem. It's also very well 
possible that I simply don't understand a LOGBack/SLF4J concept...

While testing my changes I tried to send some Markers, too. The first 
problem I encountered was that the helper class 
org.slf4j.helpers.BasicMarker has a package-private constructor. I 
missed that MarkerFactory at that point and wrote my own SimpleMarker 
that did essentially the same as BasicMarker. This worked but Chainsaw 
would explode during event deserialization if my SimpleMarker class was 
not contained in the classpath.

Is this expected behaviour or should LOGBacks SocketAppender always use 
BasicMarker instead of a user-implemented Marker class while serializing 
log events?
I'm really not sure at all. After all, it *could* be worthwhile to use 
the applications original markers if there is some additional 
functionality beside tagging a log message... but isn't that in itself a 
misuse of the marker concept?


Beside that, would it be possible to implement SLF4J's 
BasicMarker.toString somewhat like that:
    public String toString()
    {
        StringBuffer result = new StringBuffer();
        result.append("BasicMarker[name=").append(name);
        if(markers.size()>0)
        {
            result.append(", {");
            boolean first = true;
            for (Map.Entry<String, Marker> marker : markers.entrySet())
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    result.append(", ");
                }

                result.append(marker.getValue());
            }
            result.append("}");
        }
        result.append("]");
        return result.toString();
    }

So it would print contained markers instead of the current generic 
Object.toString()? This isn't really important but would be nice.

Beside the mentioned problem I'm really very happy with LOGBack. I 
switched a major project a month ago and haven't had any problems beside 
the missing support in Chainsaw ;). I especially love the ability to 
change the logging configuration during runtime in a reasonable way.

Thanks for all your work,
Joern.




More information about the logback-dev mailing list