diff --git a/src/main/java/cn/zhangdeman/filter/HttpField.java b/src/main/java/cn/zhangdeman/consts/HttpField.java similarity index 93% rename from src/main/java/cn/zhangdeman/filter/HttpField.java rename to src/main/java/cn/zhangdeman/consts/HttpField.java index e25465a..0ac4a64 100644 --- a/src/main/java/cn/zhangdeman/filter/HttpField.java +++ b/src/main/java/cn/zhangdeman/consts/HttpField.java @@ -1,4 +1,4 @@ -package cn.zhangdeman.filter; +package cn.zhangdeman.consts; // http 一些枚举key public class HttpField { diff --git a/src/main/java/cn/zhangdeman/filter/LogField.java b/src/main/java/cn/zhangdeman/consts/LogField.java similarity index 97% rename from src/main/java/cn/zhangdeman/filter/LogField.java rename to src/main/java/cn/zhangdeman/consts/LogField.java index cec5bdc..e243ece 100644 --- a/src/main/java/cn/zhangdeman/filter/LogField.java +++ b/src/main/java/cn/zhangdeman/consts/LogField.java @@ -1,4 +1,4 @@ -package cn.zhangdeman.filter; +package cn.zhangdeman.consts; // 日志相关数据的枚举值 public class LogField { diff --git a/src/main/java/cn/zhangdeman/filter/RecordField.java b/src/main/java/cn/zhangdeman/consts/RecordField.java similarity index 95% rename from src/main/java/cn/zhangdeman/filter/RecordField.java rename to src/main/java/cn/zhangdeman/consts/RecordField.java index 21f765c..9950766 100644 --- a/src/main/java/cn/zhangdeman/filter/RecordField.java +++ b/src/main/java/cn/zhangdeman/consts/RecordField.java @@ -1,4 +1,4 @@ -package cn.zhangdeman.filter; +package cn.zhangdeman.consts; // 记录的各种字段枚举值 public class RecordField { @@ -34,4 +34,7 @@ public class RecordField { public static final String RESPONSE_HTTP_CODE = "http_code"; // 苍蝇状态码,默认200 public static final String RESPONSE_HEADER = "header"; // 响应header public static final String RESPONSE_COOKIE = "cookie"; // 响应header + + + public static final String LOGGER_TYPE = "log_type"; // 日志类型 } diff --git a/src/main/java/cn/zhangdeman/filter/Request.java b/src/main/java/cn/zhangdeman/context/Request.java similarity index 95% rename from src/main/java/cn/zhangdeman/filter/Request.java rename to src/main/java/cn/zhangdeman/context/Request.java index 3c25e1c..1bb70ab 100644 --- a/src/main/java/cn/zhangdeman/filter/Request.java +++ b/src/main/java/cn/zhangdeman/context/Request.java @@ -1,5 +1,6 @@ -package cn.zhangdeman.filter; +package cn.zhangdeman.context; +import cn.zhangdeman.consts.RecordField; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/cn/zhangdeman/filter/Response.java b/src/main/java/cn/zhangdeman/context/Response.java similarity index 82% rename from src/main/java/cn/zhangdeman/filter/Response.java rename to src/main/java/cn/zhangdeman/context/Response.java index cb0e54f..a0ccd6f 100644 --- a/src/main/java/cn/zhangdeman/filter/Response.java +++ b/src/main/java/cn/zhangdeman/context/Response.java @@ -1,5 +1,6 @@ -package cn.zhangdeman.filter; +package cn.zhangdeman.context; +import cn.zhangdeman.consts.RecordField; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @@ -15,6 +16,12 @@ import java.util.Map; @Setter @JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性字段 public class Response { + @JsonProperty(RecordField.REQUEST_ID) + private String requestId; // 本次请求request id + @JsonProperty(RecordField.TRACE_ID) + private String traceId; // 全局trace id + @JsonProperty(RecordField.COST) + private Long cost; // 请求耗时 @JsonProperty(RecordField.RESPONSE_CODE) private String code; // 响应业务状态码 @JsonProperty(RecordField.RESPONSE_MESSAGE) diff --git a/src/main/java/cn/zhangdeman/filter/RuntimeContext.java b/src/main/java/cn/zhangdeman/context/RuntimeContext.java similarity index 96% rename from src/main/java/cn/zhangdeman/filter/RuntimeContext.java rename to src/main/java/cn/zhangdeman/context/RuntimeContext.java index a654311..062f3e3 100644 --- a/src/main/java/cn/zhangdeman/filter/RuntimeContext.java +++ b/src/main/java/cn/zhangdeman/context/RuntimeContext.java @@ -1,5 +1,6 @@ -package cn.zhangdeman.filter; +package cn.zhangdeman.context; +import cn.zhangdeman.consts.RecordField; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/src/main/java/cn/zhangdeman/filter/Main.java b/src/main/java/cn/zhangdeman/filter/Main.java deleted file mode 100644 index 5c853b6..0000000 --- a/src/main/java/cn/zhangdeman/filter/Main.java +++ /dev/null @@ -1,7 +0,0 @@ -package cn.zhangdeman.filter; - - -public class Main { - public static void main(String[] args) { - } -} \ No newline at end of file diff --git a/src/main/java/cn/zhangdeman/filter/filter/RequestInitFilter.java b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java similarity index 97% rename from src/main/java/cn/zhangdeman/filter/filter/RequestInitFilter.java rename to src/main/java/cn/zhangdeman/filter/RequestInitFilter.java index d182740..5befa52 100644 --- a/src/main/java/cn/zhangdeman/filter/filter/RequestInitFilter.java +++ b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java @@ -1,6 +1,10 @@ package cn.zhangdeman.filter; +import cn.zhangdeman.consts.RecordField; +import cn.zhangdeman.context.Request; +import cn.zhangdeman.context.Response; +import cn.zhangdeman.context.RuntimeContext; import jakarta.servlet.FilterChain; import jakarta.servlet.FilterConfig; import jakarta.servlet.ServletException; diff --git a/src/main/java/cn/zhangdeman/logger/LogData.java b/src/main/java/cn/zhangdeman/logger/LogData.java new file mode 100644 index 0000000..c4e7720 --- /dev/null +++ b/src/main/java/cn/zhangdeman/logger/LogData.java @@ -0,0 +1,40 @@ +package cn.zhangdeman.logger; + +import cn.zhangdeman.consts.RecordField; +import cn.zhangdeman.context.Request; +import cn.zhangdeman.context.Response; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Map; + +// 日志数据结构 +@Setter +@Getter +@JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性字段 +public class LogData { + @JsonProperty(RecordField.LOGGER_TYPE) + private String LogType; + @JsonProperty(RecordField.REQUEST_ID) + private String requestId; // 本次请求request id + @JsonProperty(RecordField.COST) + private Long cost; // 请求耗时 + @JsonProperty(RecordField.SERVER_IP) + private String serverIp; // 服务器Ip + @JsonProperty(RecordField.SERVER_HOSTNAME) + private String serverHostname; // 服务器hostname + @JsonProperty(RecordField.FINISH_TIMESTAMP) + private Long finishTimeStamp; // 完成请求时间 + @JsonProperty(RecordField.TRACE_ID) + private String traceId; // 全局trace id + @JsonProperty(RecordField.START_TIMESTAMP) + private Long startTimeStamp; // 开始请求时间 + @JsonProperty(RecordField.CONTEXT_DATA) + private Map logData; // 本条日志的上下文信息 + @JsonProperty(RecordField.REQUEST_INFO) + private Request requestInfo;// 请求信息 + @JsonProperty(RecordField.RESPONSE_INFO) + private Response responseInfo; // 响应信息 +}