<font size="2"><font face="tahoma,sans-serif">Ahhhhhh.  Thanks.  I will try that.  Which encoder should I extend - LayoutWrapping or PatternLayout?  I noticed that OutputStreamAppenders use LayoutWrappingEncoder.  Or should I roll my own from scratch?<br clear="all">

</font></font><br>--adam<br><br><a href="http://gordonizer.com" target="_blank">http://gordonizer.com</a><br><br>
<br><br><div class="gmail_quote">On Wed, Nov 9, 2011 at 13:51, ceki <span dir="ltr"><<a href="mailto:ceki@qos.ch">ceki@qos.ch</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
Although very similar to log4j, logback is different in certain aspects. In particular, logback's OutputStreamAppedner and derived classes (ConsoleAppnder, FileAppender and RollingFileAppender) use an Encoder [1] to write to the output stream. From the looks of it, you should probably write your own encoder.<br>


<br>
HTH,<br>
<br>
[1]<br>
<a href="http://logback.qos.ch/apidocs/ch/qos/logback/core/encoder/Encoder.html" target="_blank">http://logback.qos.ch/apidocs/<u></u>ch/qos/logback/core/encoder/<u></u>Encoder.html</a><div class="HOEnZb"><div class="h5">

<br>
<br>
On 09.11.2011 21:29, Adam Gordon wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'm trying to port my log4j appender and layout over to logback but am<br>
running into some issues.  My log4j appender colorizes the timestamp<br>
printed in the logs and the layout colorizes the log messages based on<br>
level - at least, in theory.<br>
<br>
I think I've correctly configured everything in the XML but my classes<br>
are not quite correct.  I'm getting the colored timestamp and I'm<br>
partially getting the colorized log messages, but am not getting the<br>
pattern I've specified in my XML and the log messages are all smushed<br>
together back to back.  I suspect I'm not overriding the right methods<br>
or not calling them in the right order or place.<br>
<br>
Here's my appender XML:<br>
<br>
<appender name="foouilog" class="com.foo.logging.<u></u>FooRollingFileAppender"><br>
<file>/usr/local/tomcat/logs/<u></u>fooui.log</file><br>
<rollingPolicy class="ch.qos.logback.core.<u></u>rolling.<u></u>TimeBasedRollingPolicy"><br>
<!-- rollover daily --><br>
<fileNamePattern>/usr/local/<u></u>tomcat/logs/fooui-%d{yyyy-MM-<u></u>dd}.%i.gz</fileNamePattern><br>
<maxHistory>10</maxHistory><br>
<<u></u>timeBasedFileNamingAndTriggeri<u></u>ngPolicy<br>
            class="ch.qos.logback.core.<u></u>rolling.SizeAndTimeBasedFNATP"<u></u>><br>
<maxFileSize>25MB</<u></u>maxFileSize><br>
</<u></u>timeBasedFileNamingAndTriggeri<u></u>ngPolicy><br>
</rollingPolicy><br>
<encoder class="ch.qos.logback.core.<u></u>encoder.LayoutWrappingEncoder"<u></u>><br>
<layout class="com.foo.logging.<u></u>AnsiColorLayout"/><br>
<pattern>%date{ISO8601} %p [%logger{5}.%method:%line] - %msg%n%rEx</pattern><br>
</encoder><br>
</appender><br>
<br>
And here's the relevant Java code:<br>
<br>
Appender:<br>
<br>
   public class FooRollingFileAppender extends<br>
RollingFileAppender<<u></u>ILoggingEvent> {<br>
     *** snip ***<br>
     public void append(ILoggingEvent eventObject) {<br>
       OutputStream os = this.getOutputStream();<br>
       // code to write out color formatted timestamp<br>
       os.flush();<br>
<br>
       super.append(eventObject);<br>
     }<br>
     *** snip ***<br>
   }<br>
<br>
Layout:<br>
<br>
   public class AnsiColorLayout extends LayoutBase<ILoggingEvent> {<br>
<br>
     *** snip ***<br>
<br>
     public String doLayout(ILoggingEvent event) {<br>
       return this.format(event);<br>
     }<br>
<br>
     private String format(ILoggingEvent event) {<br>
       StringBuilder sb = new StringBuilder();<br>
       switch (event.getLevel().toInt()) {<br>
<br>
         *** snip ***<br>
<br>
       }<br>
       sb.append(event.<u></u>getFormattedMessage());<br>
       sb.append(COLOR_DEFAULT);<br>
       return sb.toString();<br>
     }<br>
<br>
     *** snip ***<br>
   }<br>
<br>
Thanks,<br>
<br>
--adam<br>
<br>
<a href="http://gordonizer.com" target="_blank">http://gordonizer.com</a><br>
<br>
</blockquote>
<br>
<br></div></div><span class="HOEnZb"><font color="#888888">
-- <br>
Ceki<br>
<a href="http://twitter.com/#!/ceki" target="_blank">http://twitter.com/#!/ceki</a><br>
______________________________<u></u>_________________<br>
Logback-user mailing list<br>
<a href="mailto:Logback-user@qos.ch" target="_blank">Logback-user@qos.ch</a><br>
<a href="http://mailman.qos.ch/mailman/listinfo/logback-user" target="_blank">http://mailman.qos.ch/mailman/<u></u>listinfo/logback-user</a><br>
</font></span></blockquote></div><br>