diff --git a/src/main/java/cn/zhangdeman/context/Response.java b/src/main/java/cn/zhangdeman/context/Response.java index d5c5860..22713a5 100644 --- a/src/main/java/cn/zhangdeman/context/Response.java +++ b/src/main/java/cn/zhangdeman/context/Response.java @@ -5,12 +5,15 @@ import cn.zhangdeman.exception.CustomException; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletResponse; import lombok.Getter; import lombok.Setter; import org.springframework.http.HttpStatus; +import java.io.Serializable; import java.util.HashMap; import java.util.Map; @@ -18,7 +21,7 @@ import java.util.Map; @Getter @Setter @JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性字段 -public class Response { +public class Response implements Serializable { @JsonProperty(RecordField.REQUEST_ID) private String requestId; // 本次请求request id @JsonProperty(RecordField.TRACE_ID) @@ -131,4 +134,14 @@ public class Response { setResponseHeaderAndCookie(); return this; } + // 序列化 + @Override + public String toString() { + ObjectMapper mapper = new ObjectMapper(); + try { + return mapper.writeValueAsString(this); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } } diff --git a/src/main/java/cn/zhangdeman/context/RuntimeContext.java b/src/main/java/cn/zhangdeman/context/RuntimeContext.java index 0c00e26..bdd754a 100644 --- a/src/main/java/cn/zhangdeman/context/RuntimeContext.java +++ b/src/main/java/cn/zhangdeman/context/RuntimeContext.java @@ -33,6 +33,8 @@ public class RuntimeContext implements Serializable { @JsonProperty(RecordField.REQUEST_INFO) private Request requestInfo; // 请求信息 @JsonIgnore + private Response response; // 响应信息 + @JsonIgnore private HttpServletRequest httpServletRequest;// 请求实例 @JsonIgnore private HttpServletResponse httpServletResponse; // 相应实例 diff --git a/src/main/java/cn/zhangdeman/logger/LoggerInstance.java b/src/main/java/cn/zhangdeman/logger/LoggerInstance.java new file mode 100644 index 0000000..5948742 --- /dev/null +++ b/src/main/java/cn/zhangdeman/logger/LoggerInstance.java @@ -0,0 +1,4 @@ +package cn.zhangdeman.logger; + +public class LoggerInstance { +} diff --git a/src/main/java/cn/zhangdeman/logger/ResponseInfoLogProvider.java b/src/main/java/cn/zhangdeman/logger/ResponseInfoLogProvider.java new file mode 100644 index 0000000..6fc6c0b --- /dev/null +++ b/src/main/java/cn/zhangdeman/logger/ResponseInfoLogProvider.java @@ -0,0 +1,23 @@ +package cn.zhangdeman.logger; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import cn.zhangdeman.consts.RecordField; +import cn.zhangdeman.context.RuntimeContext; +import com.fasterxml.jackson.core.JsonGenerator; + +import java.io.IOException; + +// 记录请求信息 +public class ResponseInfoLogProvider extends BaseProvider { + @Override + public void writeTo(JsonGenerator gen, ILoggingEvent event) throws IOException { + RuntimeContext runtimeContext = getCurrentRequest(); + if (null == runtimeContext) { + // 非 http 请求不应该用到这个provider + return; + } + // 请求输入日志 + writeCommonField(runtimeContext, gen, LogTypeEnum.REQUEST_OUTPUT.getLogType()); + gen.writeStringField(RecordField.RESPONSE_INFO, runtimeContext.getResponse().toString()); + } +}