我已经在spring-boot中使用log4j2完成了日志记录。我想从属性文件动态设置日志文件路径。我已经为此编写了以下代码,但是效果不佳。
我的属性文件 abc.properties 代码如下
log4j2FilePath = logs/log4j2-demo.log
和我的日志文件 log4j2.xml 代码如下
<Property name="log-path">config.properties.log4j2FilePath</Property>
<RollingFile name="FileAppender" fileName="${log-path}"
filePattern="logs/log4j2-demo-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<Pattern>${LOG_PATTERN}</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="10MB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
答案 0 :(得分:0)
默认情况下, log4j2 在 log4j2.properties 文件中查找声明的动态属性。
如果您想使用其他属性文件,例如 abc.properties ,我建议使用代理变量。
我的意思是,您可以在 log4j2.properties 中创建一个变量,该变量实际上是从 abc.properties 获取值的。
因此,您可以像这样在 log4j2.properties 中访问varaibale,
property.fileName=${bundle:abc:log.path}
答案 1 :(得分:0)
如果您用“动态”一词来表示“以编程方式”,那么这就是解决方案。
在 log4j2.properties 文件中添加以下行
PYTHONPATH
并在java中设置系统属性如下
appender.rolling.fileName = ${sys:logFilePath}/logger.log
我是 log4j2 的新手,我使用 .properties 文件。所以我不确定 xml 中 System.setProperty("logFilePath", "path to the log folder");
的等价物是什么。