log4jを使用しており、通常はログ機能に記録されるログメッセージを、単体テスト中にTestNGによって作成されたテストレポートに表示したいと考えています。
Appender
これは、TestNGに出力するlog4jListener
と、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%
この投稿も役立つ場合があります。