-
Notifications
You must be signed in to change notification settings - Fork 22
/
LoggerEvent.java
136 lines (124 loc) · 2.91 KB
/
LoggerEvent.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package in.hocg.boot.logging.autoconfiguration.core;
import cn.hutool.json.JSONUtil;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import java.io.InputStream;
import java.io.OutputStream;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* Created by hocgin on 2020/3/3.
* email: hocgin@gmail.com
*
* @author hocgin
*/
@Getter
@Setter
@Accessors(chain = true)
public class LoggerEvent {
/**
* 代码位置
*/
private String mapping;
/**
* 来源(需使用请求参数, 如: source=eagle)
*/
private String source;
/**
* 请求头:host
*/
private String host;
/**
* 请求头:user-agent
*/
private String userAgent;
/**
* 登录账号
*/
private Object currentUser;
/**
* 请求IP
*/
private String clientIp;
/**
* 入口描述
*/
private String enterRemark;
/**
* 请求方式
*/
private String method;
/**
* 请求URL
*/
private String uri;
/**
* 请求参数
*/
private List<Object> args;
/**
* 响应
*/
private Object ret;
/**
* 异常信息
*/
private String exception;
/**
* 请求耗时
*/
private Long totalTimeMillis;
/**
* 发起请求的时间
*/
private LocalDateTime createdAt;
/**
* 线程内日志
*/
private static final ThreadLocal<List<String>> LOGS_REMARK = new ThreadLocal<>();
public List<String> getLogs() {
return LOGS_REMARK.get();
}
public static void log(String message) {
getOrCreateLogPool().add(message);
}
private static List<String> getOrCreateLogPool() {
List<String> list = LOGS_REMARK.get();
if (Objects.isNull(list)) {
list = new ArrayList<>();
LOGS_REMARK.set(list);
}
return list;
}
public String getArgsStr() {
return this.toJsonPrettyStr(args);
}
public String getRetStr() {
String retStr;
if ((ret instanceof InputStream) || (ret instanceof OutputStream)) {
retStr = "[\"File Stream\"]";
} else if (ret instanceof ResponseEntity && ((ResponseEntity<?>) ret).getBody() instanceof Resource) {
retStr = "[\"Resource Stream\"]";
} else if (Objects.isNull(ret)) {
retStr = "[\"void\"]";
} else {
retStr = this.toJsonPrettyStr(ret);
}
return retStr;
}
private String toJsonPrettyStr(Object object) {
if (Objects.isNull(object)) {
return "null";
}
try {
return JSONUtil.toJsonPrettyStr(object);
} catch (Exception ignored) {
return String.valueOf(object);
}
}
}