2014-09-23 145 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