2013-07-01 79 views

回答

5

這似乎是一件相當奇怪的事情,因爲通常您希望單個日誌文件中的所有行都是相同的格式,以便於目測,並且如果要執行日誌的任何自動處理稍後的。但是,如果你必須這樣說,你不應該有兩個不同的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); 
    } 
    } 

} 
+0

我的appender這種方式配置: –

+0

忽略我以前的評論,它的作品:) –

相關問題