2012-01-31 47 views
5

我需要將來自同一類的調試消息記錄到不同的文件中。
我的意思是說,從同一個類我需要一個特定的調試語句去fileA而另一個特定的調試語句去fileBjava log4j選擇要登錄的文件

如果不清楚,我想要做的就是將網絡消息記錄到一個完全獨立的文件中,而不是該類輸出的其他登錄消息。

如果我做

<logger name="com.test.modules" additivity="false" > 
    <priority value="debug"/> 
    <appender-ref ref="netWorkCommunication"/> 
    <appender-ref ref="generalDebug"/> 
    </logger> 

然後從我的課堂記錄會去這兩個文件(因爲它是從同一個包)。

如何配置log4j,以便我可以從com.test.modules下的類中選擇哪個日誌語句轉到哪個文件appender

回答

6

使用一個單獨的記錄器爲每個文件:

private static Logger log = Logger.getLogger(YourClass.class); 
private static Logger networkLog = Logger.getLogger("network." + YourClass.class.getName()); 
private static Logger httpLog = Logger.getLogger("http." + YourClass.class.getName()); 

並定義附加器用於每個記錄器如常。

2

這確實看起來應該使用多個記錄器的場景。爲網絡配置單獨的記錄器,併爲其指定一個不同的appender。