0

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

1 回答 1

1

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

于 2013-10-09T22:51:15.443 回答