Log4j TestNG 报告器附加器
在使用 TestNG 和 log4j 在 java 中开发测试自动化框架时,可以将 log4j 日志附加到 TestNG html 报告的“Reporter 输出”部分,这篇文章展示了如何实现这一点。
Step 1 - Write a custom log4j appender for testng
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() + "</br>"; // add a line break since the output is html format
}
@Override
public void close()
{
}
@Override
public boolean requiresLayout()
{
return true;
}
}
Step 2 - Config log4j properties to use the custom appender
log4j.rootLogger=DEBUG, stdout, R, testNG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=logs/test.log
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=3
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.testNG=com.xxx.TestNGReportAppender
log4j.appender.testNG.layout=org.apache.log4j.PatternLayout
log4j.appender.testNG.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n