【发布时间】:2018-05-24 09:35:22
【问题描述】:
我有一个简单的问题。
如何让代码动态提供日志文件名?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="${logfilename}.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
这里的文件名为 logs/app.log。
- 如何在文件名中附加日期和时间使其动态化?虽然应用了模式,但它不起作用。
- 这里的logs是log4j库自动创建的目录,也可以是动态的吗?
编辑在参数fileName我已经放置${logfilename}.log并设置系统属性如下:
System.setProperty("logfilename", "a_cool_logname");
现在它正在创建名为 ${logfilename}.log 的文件,这绝对不是必需的。
谢谢
【问题讨论】:
-
这一行
System.setProperty("logfilename", "a_cool_logname");创建了名为${logfilename}.log的日志文件。有趣的是:D
标签: java log4j log4j2 rollingfileappender