2016-08-01 150 views
0

我的应用程序每次运行时都会输出一些文件到动态创建的目录,其名称由System.currentTimeMillis()确定。Log4j2 - 记录到动态创建的目录

尝试以下解决方案:

<File name="File" fileName=".\xxx\${sys:log4j2.saveDirectory}\test.log" immediateFlush="false" append="false">\ 
    <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
</File> 

在Java代码中我称之为:

String path = Long.toString(System.currentTimeMillis()); 
System.setProperty("log4j2.saveDirectory", path); 

但是这并不工作,因为我得到FileNotFoundException。什么是告诉log4j2登录这种动态创建的文件夹的方法?

+0

你可以检查目录是否尝试写入存在日志/创建? – uniknow

+0

问题解决了,错过了记录器在设置属性之前被初始化 –

回答

0

问题已解决。我打电话

System.setProperty("log4j2.saveDirectory", path); 

记录器初始化后。解决方案是在初始化记录器或设置默认路径之前执行此操作。