2011-10-18 109 views
1

我正在尋找一種方法來定義傳遞日誌消息路由。假設我們有一個叫poly的應用程序,這些程序包:基於組件的日誌記錄(或:攔截外部日誌消息)

com.mycompany.server-common 
com.mycompany.communication 
com.mycompany.webservice 

server-common被其他兩個人使用。所有3個也使用org.hibernate。

現在,我喜歡使用com.mycompany.webservice中的所有消息以及來自web服務啓動的com.mycompany.server-common和org.hibernate中的消息爲webservice組件創建1個日誌文件。然後,爲通信包提供另一個相應的文件。

我的應用程序是一個在tomcat中運行的war文件,其中所有組件都在1個上下文中運行(它包含1個war文件)。我已經定義了多個日誌文件,但他們自然只記錄我靜態定義的內容,沒有傳遞包含。

我會非常感興趣的想法,我可以如何實現所需的行爲。我已經考慮過使用MDC,但我不確定這是個好主意。 另一個想法是將上下文分開,但我認爲在當前的項目狀態下這很難,並且不能提供我希望的靈活性。

任何提示或討論表示讚賞。

+1

NDC或MDC是最簡單的方法,您對此有何擔憂? –

+0

@DaveNewton只是沒有使用它們,所以我想要一些更基於經驗的觀點 – mkraemerx

+0

它們對於像這樣的東西非常方便,儘管我經常對輸出格式做一些定製以更「標準化」,就像根據需要首先放入用戶條目或首先放置組件等。 –

回答

1

如果您在webservice開始提供請求並在請求結束時清除MDC密鑰時設置了MDC密鑰,SiftingAppender將執行您所要求的操作。如果遇到困難,請在logback-user郵件列表上留言。