log4j2 - 在执行期间更改输出文件

时间:2013-10-09 14:48:35

标签: java logging configuration log4j log4j2

我正在从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>

1 个答案:

答案 0 :(得分:1)

可以使用RoutingAppender和ThreadContext映射动态更改目标日志文件名。 FAQ页面有一个很好的例子:http://logging.apache.org/log4j/2.x/faq.html#separate_log_files