方法1
参考文章:logback高级特性使用(二)
上面的文章使用的版本有点老,在0.9.19
版本之后,就不推荐在<appender>
里他用<layout>
了,所以对于文章中第二个方法,使用下面的标签:
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="your.package.YourCustomLayout">
<pattern>%msg%n</pattern>
</layout>
</encoder>
注意:encoder class 一定要指定成:LayoutWrappingEncoder
。
方法2
也可以使用下面的方法,自定义一个Encoder:
public class CustomPatternLayoutEncoder extends PatternLayoutEncoder {
@Override
public void start() {
CustomPatternLayout customPatternLayout = new CustomPatternLayout();
customPatternLayout.setContext(context);
customPatternLayout.setPattern(getPattern());
customPatternLayout.setOutputPatternAsHeader(outputPatternAsHeader);
customPatternLayout.start();
this.layout = customPatternLayout;
super.start();
}
}
在配置文件中,设置成:
<encoder class="your.package.CustomPatternLayoutEncoder">
<pattern>%msg%n</pattern>
</encoder>
其它
关于上面方法的优点和缺点,因为还没有具体看logback的源代码,所以无法评价。等看完源码后,再总结一下。