Log4j テスト レポーター アペンダー
TestNG と log4j を使用して Java でテスト自動化フレームワークを開発する場合、TestNG html レポートの「Reporter 出力」セクションに log4j ログを追加できます。この投稿では、それを実現する方法を説明します。
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