【问题标题】:log4j2 - Changing the Output file during executionlog4j2 - 在执行期间更改输出文件
【发布时间】:2013-10-09 14:48:34
【问题描述】:

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

【问题讨论】:

    标签: java logging configuration log4j log4j2


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多