2013-08-16 24 views
0

我需要設置日誌文件名稱,如log-{ClassThatInvokesLogger}-{Data}。擴展FileAppender可以獲得類名嗎?本文How to create a new log file for each time the application runs指出如何將時間戳數據添加到日誌文件名。但是如何從ExtendedFromFileAppender類中獲得{ClassThatInvokesLogger}如何使用名稱生成日誌,如log- {ClassThatInvokesLogger} - {Data}?

該功能用於測試。我需要爲每個測試創建一個新的日誌。

+0

你確定這是個好主意嗎?如果您需要按課程分析日誌,則可以輕鬆將其分解。如果你有足夠數量的類來記錄日誌,那麼幾乎不可能檢測到錯誤。 – Kayaman

+0

我有幾個測試用例,每次執行後都會創建一個新的日誌。我需要知道,哪個測試用例不是通過打開日誌來創建日誌,而僅僅是從日誌文件名稱。此功能是額外的,因爲我們還有一個收集日誌,其中包含每個測試用例的一般信息。 – Adept

回答

0

我發現了這個問題的workeround。 MyFileAppender類應具有以下

String fileName = logFile.getName() + System.getProperty("InvokingClassName");

同時調用記錄儀應該有這樣的事情

@BeforeClass public static void loggerInicialization(){ System.setProperty("InvokingClassName", "MyInvokingClassName"); logger = Logger.getLogger(MyInvokingClassName.class); }

在這種情況下InvokingClassName將是訪問,可以在使用的測試日誌文件命名。但可能有更好的解決方案

0
this.getClass().getName() 

將檢索當前對象的類的名稱。

+0

新文件命名的邏輯是在從FileAppender擴展的MyFileAppender類中實現的。所以我需要以某種方式獲得MyFileAppender類中的LoggerInvokingClassName。 this.getClass()。getName()只獲取「MyFileAppender」。 – Adept

相關問題