首页 > 解决方案 > 使用 Serenity BDD 运行时,在放心中看不到响应日志

问题描述

在我的项目中,我有以下带有 serenity-cucumber6 的版本并尝试查看 api 日志

<serenity.plugin.version>2.4.34</serenity.plugin.version>
<serenity.version>2.4.34</serenity.version>
<serenity.cucumber.version>2.4.34</serenity.cucumber.version>
<cucumber.version>6.10.4</cucumber.version>
<maven-plugin.version>3.0.0-M5</maven-plugin.version>
<java.version>1.8</java.version>

日志配置文件

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>admin.log</file>
        <encoder>
            <pattern>
                %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg..................%n
            </pattern>
        </encoder>
    </appender>


    <logger name="root" level="DEBUG"/>
    <logger name="net.serenitybdd" level="DEBUG"/>
    <logger name="net.thucydides" level="DEBUG"/>

    <root level="DEBUG">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE" />
    </root>

</configuration>

这些是为上述宁静版本下载的放心依赖项。

在此处输入图像描述

代码:

public Response getRequest(String URL, RequestSpecification spec) { return SerenityRest.given() .spec(spec) .contentType("application/json") .header("Content-Type", "application/json") .get(URL ).then().extract().response();

}

我可以看到请求日志(url、标头等)和响应代码,但看不到响应负载。

以下是日志输出文件:

14:48:36.512 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - LOADING LOCAL PROPERTIES FROM C:\Repo\my-microservice\serenity.properties ..................
14:48:36.527 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - jira.project=ABCD..................
14:48:36.527 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - serenity.outputDirectory=../target/site/serenity..................
14:48:36.527 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - serenity.project.name="My Microservice - Test Result"..................
14:48:36.527 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - jira.url=https://jira.service.xxx..................
14:48:36.533 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - LOADING LOCAL PROPERTIES FROM C:\Repo\my-microservice\serenity.properties ..................
14:48:36.535 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - jira.project=ABCD..................
14:48:36.535 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - serenity.outputDirectory=../target/site/serenity..................
14:48:36.535 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - serenity.project.name="My Microservice - Test Result"..................
14:48:36.535 [main] DEBUG n.t.c.u.PropertiesFileLocalPreferences - jira.url=https://jira.service.xxx..................
14:48:39.106 [main] DEBUG o.a.h.i.c.BasicClientConnectionManager - Get connection for route {}->http://localhost:8095..................
14:48:39.120 [main] DEBUG o.a.h.i.c.DefaultClientConnectionOperator - Connecting to localhost:8095..................
14:48:39.140 [main] DEBUG o.a.h.c.protocol.RequestAddCookies - CookieSpec selected: ignoreCookies..................
14:48:39.141 [main] DEBUG o.a.h.c.protocol.RequestAuthCache - Auth cache not set in the context..................
14:48:39.142 [main] DEBUG o.a.h.c.p.RequestProxyAuthentication - Proxy auth state: UNCHALLENGED..................
14:48:39.142 [main] DEBUG o.a.h.impl.client.DefaultHttpClient - Attempt 1 to execute request..................
14:48:39.142 [main] DEBUG o.a.h.i.conn.DefaultClientConnection - Sending request: GET /m/health HTTP/1.1..................
14:48:39.143 [main] DEBUG org.apache.http.wire -  >> "GET /m/health HTTP/1.1[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.wire -  >> "Content-Type: application/json; charset=UTF-8[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.wire -  >> "Authorization: Bearer null[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.wire -  >> "Accept: */*[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.wire -  >> "Content-Length: 0[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.wire -  >> "Host: localhost:8095[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.wire -  >> "Connection: Keep-Alive[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.wire -  >> "User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_281)[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.wire -  >> "Accept-Encoding: gzip,deflate[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.wire -  >> "[\r][\n]"..................
14:48:39.144 [main] DEBUG org.apache.http.headers - >> GET /m/health HTTP/1.1..................
14:48:39.144 [main] DEBUG org.apache.http.headers - >> Content-Type: application/json; charset=UTF-8..................
14:48:39.144 [main] DEBUG org.apache.http.headers - >> Authorization: Bearer null..................
14:48:39.144 [main] DEBUG org.apache.http.headers - >> Accept: */*..................
14:48:39.144 [main] DEBUG org.apache.http.headers - >> Content-Length: 0..................
14:48:39.144 [main] DEBUG org.apache.http.headers - >> Host: localhost:8095..................
14:48:39.144 [main] DEBUG org.apache.http.headers - >> Connection: Keep-Alive..................
14:48:39.145 [main] DEBUG org.apache.http.headers - >> User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_281)..................
14:48:39.145 [main] DEBUG org.apache.http.headers - >> Accept-Encoding: gzip,deflate..................
14:48:39.175 [main] DEBUG org.apache.http.wire -  << "HTTP/1.1 200 [\r][\n]"..................
14:48:39.176 [main] DEBUG org.apache.http.wire -  << "X-Application-Context: my-payments:it:8095[\r][\n]"..................
14:48:39.177 [main] DEBUG org.apache.http.wire -  << "Content-Type: application/vnd.spring-boot.actuator.v1+json;charset=UTF-8[\r][\n]"..................
14:48:39.177 [main] DEBUG org.apache.http.wire -  << "Transfer-Encoding: chunked[\r][\n]"..................
14:48:39.177 [main] DEBUG org.apache.http.wire -  << "Date: Tue, 15 Jun 2021 04:48:39 GMT[\r][\n]"..................
14:48:39.177 [main] DEBUG org.apache.http.wire -  << "[\r][\n]"..................
14:48:39.177 [main] DEBUG o.a.h.i.conn.DefaultClientConnection - Receiving response: HTTP/1.1 200 ..................
14:48:39.177 [main] DEBUG org.apache.http.headers - << HTTP/1.1 200 ..................
14:48:39.178 [main] DEBUG org.apache.http.headers - << X-Application-Context: my-payments:it:8095..................
14:48:39.178 [main] DEBUG org.apache.http.headers - << Content-Type: application/vnd.spring-boot.actuator.v1+json;charset=UTF-8..................
14:48:39.178 [main] DEBUG org.apache.http.headers - << Transfer-Encoding: chunked..................
14:48:39.178 [main] DEBUG org.apache.http.headers - << Date: Tue, 15 Jun 2021 04:48:39 GMT..................
14:48:39.183 [main] DEBUG o.a.h.impl.client.DefaultHttpClient - Connection can be kept alive indefinitely..................
14:48:39.199 [main] DEBUG i.r.i.RequestSpecificationImpl$RestAssuredHttpBuilder - Parsing response as: application/vnd.spring-boot.actuator.v1+json;charset=UTF-8..................
14:48:39.199 [main] DEBUG i.r.i.RequestSpecificationImpl$RestAssuredHttpBuilder - Parsed data to instance of: class org.apache.http.conn.EofSensorInputStream..................
14:48:39.211 [main] INFO  n.s.r.d.r.RequestSpecificationDecorated - No BaseStepListener, GET m/health not registered.........

此外,据我了解,Serenity这里没有专门记录其余调用相关的日志,我们在上面看到的内容来自rest-assured http-client.

所以问题是如果需要在日志中获取响应负载,是否有现有的能力rest-assured来做到这一点?

标签: java-8log4jrest-assured

解决方案


推荐阅读