增加响应日志记录的Provider

This commit is contained in:
白茶清欢 2025-06-07 22:15:57 +08:00
parent b8f0c3cb92
commit 3b4027f87b
4 changed files with 43 additions and 1 deletions

View File

@ -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);
}
}
}

View File

@ -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; // 相应实例

View File

@ -0,0 +1,4 @@
package cn.zhangdeman.logger;
public class LoggerInstance {
}

View File

@ -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());
}
}