当前位置 : 主页 > 网络安全 > 测试自动化 >

是否有与TestNG连接的log4j appender?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我使用log4j,并希望通常在我的日志工具中结束的日志消息出现在我的单元测试期间由TestNG创建的测试报告中. 我认为这意味着一个log4j Appender输出到TestNG Listener和一个适当的log4j配置在我
我使用log4j,并希望通常在我的日志工具中结束的日志消息出现在我的单元测试期间由TestNG创建的测试报告中.

我认为这意味着一个log4j Appender输出到TestNG Listener和一个适当的log4j配置在我的Maven项目的src / test / resources目录中.那是对的吗?

写起来似乎相当容易,但是有什么我可以通过Maven引入的吗?

我有同样的问题,最终自己编写了一个appender.它实际上非常简单:

复制以下类:

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;
  }
}

并将其配置为控制台appender.例如.像这样:

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%
网友评论