
Hi Ceki
Alternatively, you could write a custom conversion specifier. If you had a specifier called %debug which output contents only for level DEBUG, and a %warn specifier which output contents only for level WARN and another specifier %ERROR which output contents for ERROR, your pattern could be written as
%debug(%level %d %t) %error(%level) %info(%level) %m%n
See http://logback.qos.ch/manual/layouts.html#customConversionSpecifier for documentation on this topic.
I tried your “custom conversion specifier” approach. I think I am missing something. In your logback.xml it looks like you are able to pass arguments. I used a debugger how ever it did not appear like the the ILoggingEvent had anything particularly useful other then the level and thread Name values. List<String> optionList = getOptionList(); gives me [%level %d %t] how ever the values have not been expanded Your solution is very close to what I want to do. Thanks in advance Andy public class DebugConverter extends ClassicConverter { public DebugConverter() { // TODO Auto-generated constructor stub } @Override public String convert(ILoggingEvent event) { List<String> optionList = getOptionList(); Level level = event.getLevel(); System.err.println("convert() level:" + level); return "DebugConverter.convert()"; } } <configuration> <conversionRule conversionWord="AST_DEBUG" converterClass="com.apple.ast.logging.converter.DebugConverter" /> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!-- <pattern>%-5level %date{HH:mm:ss,SSS} [%thread] [%class{16}] [line:%L] %msg%n</pattern> --> <pattern>%AST_DEBUG{%level %d %t} %m%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration>