当前位置: 首页 > 知识库问答 >
问题:

如何在TestNG报告中包含Log4j2消息

俞子实
2023-03-14

我希望所有测试用例的TestNG报告中都有Log4j2日志信息。

TestNG使用一个名为Reporter.java的特殊记录器类来跟踪日志输出,并将其保存在结果XML中。

在log4j中,可以简单地创建一个appender实现,路由到Reporter并注册它。

使用Log4j2中的新loggerapi,很难找到有关如何实现这一点的信息。我有一些信息可以使用Log4j完成这项工作,但不能使用Log4j2。

共有2个答案

万嘉熙
2023-03-14
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

将此添加到pom中。xml

<dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
        <scope>compile</scope>
    </dependency>

然后你可以使用日志。信息或日志。错误等。。。

左丘峰
2023-03-14

据我所知,你只需要实现一个简单的Appender。类似的东西:

@Plugin(name="Reporter", category ="Core", elementType="appender", printObject=true)
public class ReporterAppender extends AbstractAppender {

    private ReporterAppender(final String name, final Layout layout) {
        super(name, null, layout, false);
    }

    @Override
    public void append(final LogEvent event) {
        final Layout<? extends Serializable> layout = getLayout();
        if (layout != null && layout instanceof AbstractStringLayout) {
             Reporter.log(((AbstractStringLayout) layout).toSerializable(event));
        } else {
             Reporter.log(event.getMessage().getFormattedMessage();            }

    @PluginFactory
    public static ReporterAppender createAppender(
        @PluginAttribute("name") @Required(message = "A name for the Appender must be specified") final String name,
        @PluginElement("Layout") Layout<? extends Serializable> layout) {
        return new ReporterAppender(name, layout);
    }
}
 类似资料:
  • 问题内容: 目前,我正在以这种方式拍摄测试失败的屏幕截图: 我可以将自己的屏幕截图包含在TestNG报告链接或图片中吗?如果是,怎么办? 我在网上发现的只是FEST框架。但是由于我已经在截屏了,所以我不想使用其他框架。 问题答案: 是的,您可以在testng报告中包含指向屏幕截图的链接。 您需要通过使用@Listeners({yourListener.class})注释您的测试类或所有测试类的父级

  • 问题内容: 目前,我正在以这种方式拍摄测试失败的屏幕截图: 我可以将自己的屏幕截图包含在TestNG报告链接或图片中吗?如果是,怎么办? 我在网上发现的只是FEST框架。但是由于我已经在截屏了,所以我不想使用其他框架。 问题答案: 是的,您可以在testng报告中包含指向屏幕截图的链接。 您需要调用方法以通过@Listeners({yourListener.class})注释您的测试类或所有测试类

  • 背景: null > @test(groups={“init”})public void openURL() 包含用于启动webdriver并使用给定URL打开chrome>实例的webdriver代码。 @test(dependsonGroups={“init”})public void testLogin() 包含的webdriver代码指向: 1。找到用户名密码文本输入元素,从属性文件中输入

  • 我已经使用Maven project和Selenium&TestNG创建了我想从Jenkins执行的自动化脚本。在Jenkins中,我添加了TestNG插件来发布TestNG报告。但它没有显示出来。我得到以下提到的错误。 我已经尝试了以下选项,但对我来说不起作用。 > 尝试给出TestNG报告的完整路径。模式中的向前斜杠和向后斜杠。 通过更改TestNG结果文件路径,我尝试了其他不同的选项,但它对

  • 我的测试方法中有多个断言(assertTrue),我想将断言失败传递给我的@AfterMethod,我的测试在该断言上失败,这样我就可以获得API测试失败的确切位置。有没有办法做到这一点?使用Rest assured,Maven&TestNG。