java - 使用系统属性配置 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-value
myAppenderLoggerName.MaxFileSize = my-value
我知道我可以$(sys:my-parameter-name:-default-value)
在 log4j2 中使用进行替换,但是是否有一种直接的方法可以通过直接在 log4j2 中引用它的属性名称来覆盖参数,就像有 log4j 一样myAppender.paramterNameForRolloverSizeInLog4j2 = my-value
?
解决方案
不,Log4j2 不会自动将每个属性与系统属性相关联。
我不确定您为什么要这样做,因为那样会很麻烦。例如,要设置您需要的最大文件大小
-DmyAppender.policies.sizeBasedTriggeringPolicy.max=10MB
怎么样更好?但是如果你真的想要你可以自由地做
<property name="myAppenderMax">${sys:myAppender.policies.sizeBasedTriggeringPolicy.max:=10MB}</property>
然后将 ${myAppenderMax} 指定为 appender 配置中的值。
推荐阅读
- php - PHP 从 REST API 的 JSON 数组中提取值
- javascript - 为 JavaScript 数组的 filter() 方法创建基于可迭代的替代方案
- apache-spark - 从 spark 写入 neo4j 时,Spark-neo4j 连接器自动转换时区
- python - Python:根据日期列出 Azure 容器中的 blob
- android - 在 Kotlin 协程中进行无限循环的最佳实践是什么?
- oracle - 甲骨文形式的指纹或面部扫描仪
- selenium - Selenium ChromeOptions 的含义
- shell - shell for循环读取目录内的文件
- javascript - 为什么我的 Nuxt 中间件即使在突变后也无法获得更新的存储状态?
- react-native - React Native 项目--如何在 reactnative 应用中创建 ios 和 android 文件夹