我正在从log4j切换到log4j2,并且除了以下情况之外,一切都很顺利。在我的代码中,我有一个测试引擎,可以将文本输出到文件中。我正在使用log4j2来处理日志记录。我想为每个测试创建一个单独的日志文件,文件名是测试名称。
例如,test1将输出到test1.log,test2将输出到test2.log。使用此代码可以在log4j中实现...
private Category testOutput = Category.getInstance("ModelTestOutput");
FileAppender outFile = new FileAppender(new PatternLayout("%m%n"), fileName, false);
testOutput.addAppender(outFile);
但是,我似乎无法找到与此匹配的新log4j2模式。
我现在设置的就是这样......
protected Logger testOutput = LogManager.getLogger();
//unknown function to tailor the output file name
//something similar to above, like testOutput.addAppender()
并在log4j2.xml文件中
<property name="test-file">test.log</property>
<appender type="File" name="TestLog" fileName="${test-path}${test-file}">
<layout type="PatternLayout" pattern="%m%n"></layout>
</appender>
<logger name="tester.fvt" level="DEBUG" additivity="false">
<appender-ref ref="TestLog" />
</logger>
答案 0 :(得分:1)
可以使用RoutingAppender和ThreadContext映射动态更改目标日志文件名。 FAQ页面有一个很好的例子:http://logging.apache.org/log4j/2.x/faq.html#separate_log_files