2015-06-03 57 views
0

我需要爲每個請求維護一個唯一的Id,因爲我們將信息和錯誤日誌寫入不同的文件,爲了跟蹤這個請求1,我們得到了這個錯誤和信息信息。我將Unicode作爲每種方法的附加參數傳遞,這看起來很糟糕。春天可以選擇任何其他選項來處理這些東西。如何在春天爲每個請求維護唯一的ID

樣本跟蹤編號:

信息,file.log

uniqueId1 request1 

錯誤file.log

uniqueId1 error1 
uniqueId2 error2 

爲了實現這一目標,我們經過UNIQUEID的控制器,服務的每一個方法和dao層。

回答

0

如果你使用log4j的,你可以一次在你的控制器/服務的一開始使用這個

MDC.put("uniqueId", your id here); 

然後,在你的log4j的配置,你可以使用%X {UNIQUEID}這樣的:

log4j.appender.default.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c [%X{uniqueId}] -> %m%n 

當您完成(在請求結束)你只需做:

MDC.remove("uniqueId"); 
+0

當使用SLF4J,這是抽象的,你是巴斯可以自由選擇哪個日誌記錄框架。 –

+0

@ wesker317感謝您對MDC的建議。另外,我不知道它會學習和使用它。我們使用SLF4j和logback.xml配置。 – kumar