我使用 log4j,并希望通常在我的日志记录工具中结束的日志消息出现在我的单元测试期间 TestNG 创建的测试报告中。
我认为这意味着 log4jAppender
输出到 TestNGListener
以及我的 Maven 项目的 src/test/resources 目录中的适当 log4j 配置。那是对的吗?
看起来相当容易编写,但是有什么东西我可以通过 Maven 获取吗?
我遇到了同样的问题,最终自己编写了一个附加程序。其实很简单:
复制以下类:
public class TestNGReportAppender extends AppenderSkeleton {
@Override
protected void append(final LoggingEvent event) {
Reporter.log(eventToString(event));
}
private String eventToString(final LoggingEvent event) {
final StringBuilder result = new StringBuilder(layout.format(event));
if(layout.ignoresThrowable()) {
final String[] s = event.getThrowableStrRep();
if (s != null) {
for (final String value : s) {
result.append(value).append(Layout.LINE_SEP);
}
}
}
return result.toString();
}
@Override
public void close() {
}
@Override
public boolean requiresLayout() {
return true;
}
}
并像控制台附加器一样配置它。例如。像这样:
log4j.appender.testNG=some.package.TestNGReportAppender
log4j.appender.testNG.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.testNG.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)