gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:02:04 25 4
gpt4 key购买 nike

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

最佳答案

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

关于java - log4j2 - 在执行期间更改输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19275362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com