增加响应日志记录的Provider
This commit is contained in:
parent
b8f0c3cb92
commit
3b4027f87b
@ -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<Data> {
|
||||
public class Response<Data> implements Serializable {
|
||||
@JsonProperty(RecordField.REQUEST_ID)
|
||||
private String requestId; // 本次请求request id
|
||||
@JsonProperty(RecordField.TRACE_ID)
|
||||
@ -131,4 +134,14 @@ public class Response<Data> {
|
||||
setResponseHeaderAndCookie();
|
||||
return this;
|
||||
}
|
||||
// 序列化
|
||||
@Override
|
||||
public String toString() {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
try {
|
||||
return mapper.writeValueAsString(this);
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +33,8 @@ public class RuntimeContext implements Serializable {
|
||||
@JsonProperty(RecordField.REQUEST_INFO)
|
||||
private Request requestInfo; // 请求信息
|
||||
@JsonIgnore
|
||||
private Response<Object> response; // 响应信息
|
||||
@JsonIgnore
|
||||
private HttpServletRequest httpServletRequest;// 请求实例
|
||||
@JsonIgnore
|
||||
private HttpServletResponse httpServletResponse; // 相应实例
|
||||
|
4
src/main/java/cn/zhangdeman/logger/LoggerInstance.java
Normal file
4
src/main/java/cn/zhangdeman/logger/LoggerInstance.java
Normal file
@ -0,0 +1,4 @@
|
||||
package cn.zhangdeman.logger;
|
||||
|
||||
public class LoggerInstance {
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user