2014-09-23 143 views
3

我有要求在日誌條目本身中包含日誌文件的名稱。在Log4j的日誌條目中包含日誌文件名

例如,說日誌文件的最終名稱是trx_log.2014-09-22-12-42我打印的日誌條目應該有相同的名稱。以下是一個示例日誌條目。

123456|test value|xyz|trx_log.2014-09-22-12-42 

我正在使用Log4j DailyRollingFileAppender來打印日誌。有沒有一種方法可以使用一些log4j/logback配置來實現此需求。

+0

我道歉。但爲什麼?!!?!?!??!這只是對空間的浪費...... – Nahum 2014-09-23 11:26:38

+0

爲什麼不嘗試將trx_log.2014-09-22-12-42附加到您的類日誌語句的簡單方法。如果你在prj中從零開始實現記錄器,但在其他情況下,你可以檢查你的appender的模式佈局,在那裏你可以配置ConversionPattern – vikeng21 2014-09-23 11:39:15

+0

是的,我知道追加文件名是浪費時間。但這是我必須打印的CDR日誌的要求:) – 2014-09-23 16:12:42

回答

0

不是我所知道的。

但是,解決方案確實存在:編寫您自己的自定義擴展DailyRollingFileAppender

請注意,雖然文件名將只提供給你的自定義appender:如果你想在另一appender中使用這些信息(唯一的用例我可以想到這可能是任何用途),那麼你需要更多使用共享數據存儲(共享內存,文件系統,數據庫,無論什麼),最簡單的解決方案是您剛做的appender的靜態成員。在這種情況下,另一個appender(緯度經濟學說,控制檯)也需要擴展,以便將新信息附加到日誌語句。

+0

我也在考慮擴展'RollingFileAppender'並實現自定義。只是想通過一些配置來檢查是否有另一種方式來做到這一點。 – 2014-09-23 16:15:27

-1

使用此方法logger.getName()

logger.log(Level.SEVERE, 「異常在」 + e.getMessage()+ logger.getName());

+0

這將打印類FQN或任何其他用於命名當前記錄器的名稱,而不是要寫入日誌條目的文件名,因爲該信息被隱藏到記錄器,只能在appender中使用。 – 2014-09-23 14:13:04