首页 > 解决方案 > 使用系统属性配置 log4j2

问题描述

嗨,我最近在我的 spring 项目中将日志从 log4j 迁移到 log4j2。

一切都按预期正常工作,但我想知道如何通过直接从给定系统参数中获取 Rolling File Appender 的值来设置属性 <SizedBasedTriggeringPolicy size="10MB" /><DefaultRolloverPolicy max="80" />在我的 log4j2 配置文件中。

在 log4j 中,我曾经使用<param name="MaxFileSize" value="10MB" /> and在我的 RollingFileAppender 默认配置中,并且可以通过传递和作为系统属性 args<param name="MaxBackupIndex" value="80" />来覆盖参数值。myAppenderLoggerName.MaxBackupIndex = my-valuemyAppenderLoggerName.MaxFileSize = my-value

我知道我可以$(sys:my-parameter-name:-default-value)在 log4j2 中使用进行替换,但是是否有一种直接的方法可以通过直接在 log4j2 中引用它的属性名称来覆盖参数,就像有 log4j 一样myAppender.paramterNameForRolloverSizeInLog4j2 = my-value

标签: javalog4jlog4j2

解决方案


不,Log4j2 不会自动将每个属性与系统属性相关联。

我不确定您为什么要这样做,因为那样会很麻烦。例如,要设置您需要的最大文件大小

-DmyAppender.policies.sizeBasedTriggeringPolicy.max=10MB

怎么样更好?但是如果你真的想要你可以自由地做

<property name="myAppenderMax">${sys:myAppender.policies.sizeBasedTriggeringPolicy.max:=10MB}</property>

然后将 ${myAppenderMax} 指定为 appender 配置中的值。


推荐阅读