增加响应日志记录的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.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
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.Cookie;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -18,7 +21,7 @@ import java.util.Map;
|
|||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性字段
|
@JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性字段
|
||||||
public class Response<Data> {
|
public class Response<Data> implements Serializable {
|
||||||
@JsonProperty(RecordField.REQUEST_ID)
|
@JsonProperty(RecordField.REQUEST_ID)
|
||||||
private String requestId; // 本次请求request id
|
private String requestId; // 本次请求request id
|
||||||
@JsonProperty(RecordField.TRACE_ID)
|
@JsonProperty(RecordField.TRACE_ID)
|
||||||
@ -131,4 +134,14 @@ public class Response<Data> {
|
|||||||
setResponseHeaderAndCookie();
|
setResponseHeaderAndCookie();
|
||||||
return this;
|
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)
|
@JsonProperty(RecordField.REQUEST_INFO)
|
||||||
private Request requestInfo; // 请求信息
|
private Request requestInfo; // 请求信息
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
|
private Response<Object> response; // 响应信息
|
||||||
|
@JsonIgnore
|
||||||
private HttpServletRequest httpServletRequest;// 请求实例
|
private HttpServletRequest httpServletRequest;// 请求实例
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
private HttpServletResponse httpServletResponse; // 相应实例
|
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