java - log4j2 DailyRollingFileAppende 实际日志中基于 pid 的滚动日志文件

标签 java logging log4j log4j2

我已经实现了一个插件,可以添加有关 pid 的日志信息。

appender.DRFA.layout.pattern = %d{ISO8601} %5p **[%pid]** [%t] %c{2}: %m%n

还有另一个用于 FilePattern 转换的插件,可以在滚动发生时将 pid 添加到文件

appender.DRFA.filePattern = ${sys:some.log.dir}/${sys:some.log.file}.%d{yyyy-MM-dd}.%pid

尝试了解如何进行下一步:

在一天结束时,获取日志文件中具有特定 pid 的所有行,并将它们滚动到具有由模式定义的相同 pid 的文件

appender.DRFA.filePattern = ${sys:some.log.dir}/${sys:some.log.file}.%d{yyyy-MM-dd}.%pid

最佳答案

Log4j2 翻转无法将多个日志文件合并到一个 zip 文件中。翻转可以重命名和/或压缩单个日志文件。您可以做的是将具有相同pid信息的所有日志文件移动到同一目录:

appender.DRFA.filePattern = ${sys:some.log.dir}.%pid/${sys:some.log.file}.%d{yyyy-MM-dd}

如果您需要将多个文件压缩在一起,或将这些文件一起附加到单个文本文件中,内置翻转目前无法执行此操作。

看看custom delete action可以在翻转时触发。 您也许可以将其扩展到您的想法中。如果您需要 Log4j2 为自定义翻转操作进行 API 更改,请提交 JIRA 票证。

关于java - log4j2 DailyRollingFileAppende 实际日志中基于 pid 的滚动日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45940102/

相关文章:

java - 使用 Seam 拦截 HTTP session 的结束

logging - 如何更改张量板的日志记录级别?

java - Java 中的 System.gc() 和 finalize() 方法有什么区别?

mysql - 在记录付款交易时,我应该使用表的 ID 还是直接使用值

azure - 从 ACI 上的容器内运行的控制台应用程序记录应用程序数据的最佳方法

java - 为什么 M2Eclipse 在 mvn 命令行没有时提示缺少工件?

java - 禁用log4j 2异常(apache异常)

java - Log4j2:如何打印日志中的所有对象参数

java - 为什么我在这里收到未经检查的警告?

java - 调试测试,需要建议