Jay
2024-10-08 79914dabac38d83676ea16ff65da8d941a099285
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.infra.dal.dataobject.logger;
H 2
3 import com.iailab.framework.common.enums.UserTypeEnum;
4 import com.iailab.framework.mybatis.core.dataobject.BaseDO;
5 import com.iailab.module.infra.enums.logger.ApiErrorLogProcessStatusEnum;
6 import com.baomidou.mybatisplus.annotation.KeySequence;
7 import com.baomidou.mybatisplus.annotation.TableId;
8 import com.baomidou.mybatisplus.annotation.TableName;
9 import lombok.*;
10
11 import java.time.LocalDateTime;
12
13 /**
14  * API 异常数据
15  *
16  * @author iailab
17  */
18 @TableName("infra_api_error_log")
19 @Data
20 @EqualsAndHashCode(callSuper = true)
21 @ToString(callSuper = true)
22 @Builder
23 @NoArgsConstructor
24 @AllArgsConstructor
25 @KeySequence(value = "infra_api_error_log_seq")
26 public class ApiErrorLogDO extends BaseDO {
27
28     /**
29      * {@link #requestParams} 的最大长度
30      */
31     public static final Integer REQUEST_PARAMS_MAX_LENGTH = 8000;
32
33     /**
34      * 编号
35      */
36     @TableId
37     private Long id;
38     /**
39      * 用户编号
40      */
41     private Long userId;
42     /**
43      * 链路追踪编号
44      *
45      * 一般来说,通过链路追踪编号,可以将访问日志,错误日志,链路追踪日志,logger 打印日志等,结合在一起,从而进行排错。
46      */
47     private String traceId;
48     /**
49      * 用户类型
50      *
51      * 枚举 {@link UserTypeEnum}
52      */
53     private Integer userType;
54     /**
55      * 应用名
56      *
57      * 目前读取 spring.application.name
58      */
59     private String applicationName;
60
61     // ========== 请求相关字段 ==========
62
63     /**
64      * 请求方法名
65      */
66     private String requestMethod;
67     /**
68      * 访问地址
69      */
70     private String requestUrl;
71     /**
72      * 请求参数
73      *
74      * query: Query String
75      * body: Quest Body
76      */
77     private String requestParams;
78     /**
79      * 用户 IP
80      */
81     private String userIp;
82     /**
83      * 浏览器 UA
84      */
85     private String userAgent;
86
87     // ========== 异常相关字段 ==========
88
89     /**
90      * 异常发生时间
91      */
92     private LocalDateTime exceptionTime;
93     /**
94      * 异常名
95      *
96      * {@link Throwable#getClass()} 的类全名
97      */
98     private String exceptionName;
99     /**
100      * 异常导致的消息
101      *
102      * {@link cn.hutool.core.exceptions.ExceptionUtil#getMessage(Throwable)}
103      */
104     private String exceptionMessage;
105     /**
106      * 异常导致的根消息
107      *
108      * {@link cn.hutool.core.exceptions.ExceptionUtil#getRootCauseMessage(Throwable)}
109      */
110     private String exceptionRootCauseMessage;
111     /**
112      * 异常的栈轨迹
113      *
114      * {@link org.apache.commons.lang3.exception.ExceptionUtils#getStackTrace(Throwable)}
115      */
116     private String exceptionStackTrace;
117     /**
118      * 异常发生的类全名
119      *
120      * {@link StackTraceElement#getClassName()}
121      */
122     private String exceptionClassName;
123     /**
124      * 异常发生的类文件
125      *
126      * {@link StackTraceElement#getFileName()}
127      */
128     private String exceptionFileName;
129     /**
130      * 异常发生的方法名
131      *
132      * {@link StackTraceElement#getMethodName()}
133      */
134     private String exceptionMethodName;
135     /**
136      * 异常发生的方法所在行
137      *
138      * {@link StackTraceElement#getLineNumber()}
139      */
140     private Integer exceptionLineNumber;
141
142     // ========== 处理相关字段 ==========
143
144     /**
145      * 处理状态
146      *
147      * 枚举 {@link ApiErrorLogProcessStatusEnum}
148      */
149     private Integer processStatus;
150     /**
151      * 处理时间
152      */
153     private LocalDateTime processTime;
154     /**
155      * 处理用户编号
156      *
157      * 关联 com.iailab.adminserver.modules.system.dal.dataobject.user.SysUserDO.SysUserDO#getId()
158      */
159     private Long processUserId;
160
161 }