3
我需要一個文件作爲日誌,但是我想爲這個文件指定兩個不同的佈局。我讀了一些地方,宣佈兩個appender編寫相同的文件不建議,所以怎麼辦?提前致謝。log4j:爲同一個文件設置不同的佈局
我需要一個文件作爲日誌,但是我想爲這個文件指定兩個不同的佈局。我讀了一些地方,宣佈兩個appender編寫相同的文件不建議,所以怎麼辦?提前致謝。log4j:爲同一個文件設置不同的佈局
這似乎是一件相當奇怪的事情,因爲通常您希望單個日誌文件中的所有行都是相同的格式,以便於目測,並且如果要執行日誌的任何自動處理稍後的。但是,如果你必須這樣說,你不應該有兩個不同的appender同時寫入同一個文件。
的解決方案可能會實現一個自定義Layout
可以檢查日誌事件,然後委託給兩個一個(或多個)其他佈局做實際的格式
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這種方式配置: –
忽略我以前的評論,它的作品:) –