我正在尝试使用RollingFile
附加程序配置log4j2,以便保存以前的日志文件,并且每次运行都有一个新的日志文件。
log4j2.xml中的附加程序配置如下:
<RollingFile name="Logfile" >
<append value="false" />
<filePattern value="log-%d{yyyy-MM-dd_HHmm}.txt" />
<fileName value="log.txt" />
<PatternLayout pattern="[%d{HH:mm:ss.SSS}] [%N] [%-5level] [%-16t] [%-20logger{36}]: %msg%n"/>
<Policies>
<OnStartupTriggeringPolicy />
</Policies>
</RollingFile>
运行应用程序时,我立即收到以下错误:
2016-07-26 12:15:54,888 main ERROR Unable to create file java.io.IOException: The system cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1012)
...
2016-07-26 12:15:54,919 main ERROR Null object returned for RollingFile in Appenders.
使用简单的
File
附加程序会在程序目录中创建所需的日志文件,因此我希望RollingFile
附加程序也能够处理相对路径。可能会这样,因为绝对路径也不起作用。如果我将程序目录的路径或%TMP%
env var的实际值放在fileName
和filePattern
的前面,则会收到相同的错误。因此,非常感谢您为我的目标配置log4j2的任何帮助...
最佳答案
fileName
和filePattern
是RollingFile标签的属性,而不是子标签的属性:
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
见https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender