Java log4j:为同一文件设置不同的布局
我需要一个日志文件,但是我想为这个文件指定两种不同的布局。我在某个地方读到,不建议声明两个写相同文件的appender,那么怎么办呢?提前感谢。这似乎是一件很奇怪的事情,因为通常您希望单个日志文件中的所有行都是相同的格式,这既便于查看,也便于以后对日志进行自动处理。但是,如果必须这样做,那么您不应该让两个不同的appender同时写入同一个文件,这是正确的 解决方案可能是实现一个定制的Java log4j:为同一文件设置不同的布局,java,log4j,Java,Log4j,我需要一个日志文件,但是我想为这个文件指定两种不同的布局。我在某个地方读到,不建议声明两个写相同文件的appender,那么怎么办呢?提前感谢。这似乎是一件很奇怪的事情,因为通常您希望单个日志文件中的所有行都是相同的格式,这既便于查看,也便于以后对日志进行自动处理。但是,如果必须这样做,那么您不应该让两个不同的appender同时写入同一个文件,这是正确的 解决方案可能是实现一个定制的布局,它可以检查日志事件,然后委托给两个(或更多)其他布局中的一个来执行实际的格式化 public class
布局
,它可以检查日志事件,然后委托给两个(或更多)其他布局中的一个来执行实际的格式化
public class MultiLayout extends Layout {
private Layout layout1;
private Layout layout2;
public MultiLayout() {
layout1 = ....;
layout1.activateOptions();
layout2 = ....;
layout2.activateOptions();
}
public boolean ignoresThrowable() {
return layout1.ignoresThrowable();
}
public String format(LoggingEvent e) {
// choose the appropriate layout, e.g. based on logger name
if(e.getLoggerName().startsWith("com.example.")) {
return layout1.format(e);
} else {
return layout2.format(e);
}
}
}
我的appender配置如下: