【问题标题】:Including log file name in log entry in Log4j在 Log4j 的日志条目中包含日志文件名
【发布时间】:2014-11-17 13:58:42
【问题描述】:

我需要在日志条目本身中包含日志文件的名称。

例如说日志文件的最终名称类似于trx_log.2014-09-22-12-42,我正在打印的日志条目应该具有相同的名称。以下是示例日志条目。

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

我目前正在使用 Log4j DailyRollingFileAppender 打印日志。有没有一种方法可以让我使用一些 log4j/logback 配置来实现这个要求。

【问题讨论】:

  • 我很抱歉。但为什么?!!?!?!??!这只是浪费空间......
  • 为什么不尝试将 trx_log.2014-09-22-12-42 附加到您的类的日志语句的简单方法。如果您在 prj 中从头开始实现 logger,这很好,但在其他情况下,您可以检查 appender 的模式布局,您可以在其中配置 ConversionPattern
  • 是的,我知道附加文件名是浪费时间。但这是我必须打印的 CDR 日志的要求:)

标签: java logging log4j logback


【解决方案1】:

我不知道。

但解决方案确实存在:编写您自己的 DailyRollingFileAppender 的自定义扩展。

请注意,尽管文件名仅对您的自定义附加程序可用:如果您想在另一个附加程序中使用此类信息(我能想到的唯一用例可能有任何用处),那么您需要一个更复杂的使用共享数据存储(共享内存、文件系统、数据库等)的解决方案,最简单的解决方案是您刚刚制作的附加程序的静态成员。在这种情况下,为了将新信息附加到日志语句中,还需要扩展其他附加程序(例如控制台)。

【讨论】:

  • 我也在考虑扩展RollingFileAppender 并实现自定义。只是想通过一些配置检查是否有另一种方法。
【解决方案2】:

使用这个方法 logger.getName()

logger.log(Level.SEVERE,""+e.getMessage()+logger.getName()) 中的异常;

【讨论】:

  • 打印类 FQN 或用于命名当前记录器的任何其他内容,而不是将写入日志条目的文件名,因为该信息对记录器来说是模糊的,并且仅在附加程序中可用。
猜你喜欢
  • 2012-02-06
  • 2010-09-10
  • 1970-01-01
  • 2010-09-16
  • 2019-04-11
  • 2013-08-31
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
相关资源
最近更新 更多