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