如何使用 log4j 和 log4j2 属性文件登录到同一个文件

How to use log4j and log4j2 properies file to log into same file

我想根据 sizetime 滚动和压缩日志文件。我发现使用 log4j2 可以很容易地执行此操作。 问题是许多内部 jar 仍然使用 log4j 进行日志记录,我想记录下来。

我在这里想到的可能解决方案是使用 log4j1.compatibility=true 并保持 log4j.properties 和 log4j2.properties

我想不通的是如何在 log4j.properties 和 log4j2 属性中使用 RollingFileAppender?

请建议我如何使用属性文件(log4j 和 log4j2)在达到特定大小或时间时自动压缩记录到同一个文件。

注意: 我尝试使用 uk.org.simonsite.log4j.appender.TimeAndSizeRollingAppender 但出现错误 NoClassDefError : org.apache.log4j.xml.unrecognizedelementhandler 由于 class 在大于 v1.2.17.

的 log4j 版本中被删除

大多数库只使用 Log4j 1.x 来记录消息,它们不以编程方式配置日志系统。因此,您可以简单地将 log4j 替换为 log4j-1.2-api.

Log4j 1.x 桥 (log4j-1.2-api) 与 Log4j 2.x 核心共享其配置,因此您可以使用本机 Log4j 2.x 配置文件来配置 RollingFileAppender。不需要 log4j.properties 文件或 log4j1.compatibility 属性。

PS:在 Log4j 2.x 支持的 4 种配置文件格式中(参见 documentation),属性格式可能更为复杂。就我个人而言,我会选择其余 3 个之一(XML、JSON 或 YAML)。 XML 格式不需要额外的依赖。