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

在Junit测试中,日志重新将日志发布到Log4J

柯建业
2023-03-14

我们正在使用REST保证来测试一些REST服务。我们需要将请求和响应日志重定向到Log4j日志。我们有以下代码来测试日志重定向:

public class RestTest {
    private static RequestSpecification spec;
    private static Logger logger = LogManager.getLogger(RestTest.class);
    @Rule
    public TestWatcher watcher = new Log4JWatcher();

    @BeforeClass
    public static void initSpec(){
    PrintStream logStream = IoBuilder.forLogger(logger).buildPrintStream();
    RestAssuredConfig restAssuredConfig = new RestAssuredConfig();
    LogConfig logConfig = restAssuredConfig.getLogConfig(); 
    logConfig
        .defaultStream(logStream)
        .enablePrettyPrinting(true);

    spec = new RequestSpecBuilder()
        .setContentType(ContentType.JSON)
            .setBaseUri("http://jsonplaceholder.typicode.com/")
            .addFilter(new ResponseLoggingFilter())
            .addFilter(new RequestLoggingFilter())
            .setConfig(restAssuredConfig)
            .build();
    
}

@Test
public void useSpec(){
    given()
        .spec(spec)
        .param("limit", 20)
        .when()
        .get("posts")
        .then()
        .statusCode(200);
    }
}

我们将以下日志输出到log4j文件:

09:47:17.264 [main] INFO  test.util.Log4JWatcher - useSpec(test.ExtentReportSandbox.RestTest)
09:49:45.485 [main] INFO  test.util.Log4JWatcher - useSpec(test.ExtentReportSandbox.RestTest)

在system.out,我们看到请求和响应的REST保证输出。该输出没有重定向到Log4j文件。如何将控制台输出重定向到Log4j文件?

共有1个答案

魏康安
2023-03-14

通过更改以下内容解决了这一问题:

        new RequestLoggingFilter();
    new ResponseLoggingFilter();
    spec = new RequestSpecBuilder()
            .setContentType(ContentType.JSON)
            .setBaseUri("http://jsonplaceholder.typicode.com/")
            .addFilter(ResponseLoggingFilter.logResponseTo(logStream))
            .addFilter(RequestLoggingFilter.logRequestTo(logStream))
            .setConfig(restAssuredConfig)
            .build();

现在,它像我们预期的那样将输出发送到Log4j文件。关键是在过滤器中添加“logResponseTo”和“logRequestTo”。

 类似资料:
  • 有没有更简单的方法来完成我想要的?如果这是最好的方法,那么我做错了什么?

  • zebra-client和zebra-cat-client的版本保持同步,不会单独发布版本。 zebra-dao版本单库维护。 推荐版本 zebra-client : 2.9.1 zebra-cat-client : 2.9.1 zebra-dao : 0.2.1 最新版本 zebra-client : 2.9.1 zebra-cat-client : 2.9.1 zebra-dao : 0.2.

  • 我刚拿到一台新的索尼Xperia XA,在这台设备上发现了一个奇怪的问题。它没有显示任何详细的调试日志。我尝试了Android Studio中的每个设置,使用adb logcat检查Android Studio是否只是过滤它们。我甚至使用了不同的电缆。我没主意了,请帮帮我。

  • 3)是否有任何方法告诉journald从特定文件中获取日志? 4)如果没有,有什么变通办法吗?

  • 项目所有的主要更新都将记录在本文档中。 [Unreleased] 优化拷贝 npm 模块链路 支持 createRef renderProps 支持 支持 forwardRef useImperativeHandle 支持基于 Kbone 的运行时方案 2019-12-19 Added 支持 withRouter Fixed 修复 JSX 参数绑定的问题 Changed 用户在 tabBar.it

  • 升级 使用 pip 升级 MkDocs 到最新版: pip install -U mkdocs 查看当前安装的版本使用 pip freeze: pip freeze | grep mkdocs 0.11.1 (2014-11-20) 修复: Fix a CSS wrapping issue with code highlighting in the ReadTheDocs theme. (