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
package com.yanzuoguang.util.log;
import com.yanzuoguang.util.exception.ExceptionHelper;
import com.yanzuoguang.util.helper.DateHelper;
import com.yanzuoguang.util.helper.FileHelper;
import com.yanzuoguang.util.helper.StringHelper;
import com.yanzuoguang.util.vo.MapRow;
import java.io.File;
/**
* 日志处理默认处理函数
*
* @author 颜佐光
*/
public class LogDefault implements RunnableLog {
private static String pathFormat = StringHelper.EMPTY;
public static String getPathFormat() {
return pathFormat;
}
public static void setPathFormat(String pathFormat) {
LogDefault.pathFormat = pathFormat;
}
/**
* 需要处理的日志
*
* @param info 日志列表
*/
@Override
public void run(LogInfo info) {
if (info == null) {
return;
}
Class<?> cls = info.getCls();
String clsName = StringHelper.EMPTY;
if (cls != null) {
clsName = info.getCls().getSimpleName();
}
StringBuilder sb = new StringBuilder();
sb.append("/* ");
sb.append(DateHelper.getDateTimeString("HH:mm:ss.SSS", info.getNow()));
sb.append(" pid:");
sb.append(info.getThreadId());
sb.append(" t:");
sb.append(info.getTime());
sb.append(" /");
sb.append(info.getTotalTime());
sb.append(" ms ");
sb.append(clsName);
sb.append(" ");
sb.append(info.getTag());
sb.append(" */ ");
sb.append(info.getMessage());
if (info.isError()) {
Throwable ex = info.getException();
if (ex != null) {
sb.append(ex.getClass().getName());
sb.append(ex.getMessage());
}
System.err.println(sb);
} else {
System.out.println(sb);
}
if (!StringHelper.isEmpty(pathFormat)) {
MapRow row = new MapRow();
row.put("day", DateHelper.getToday(info.getNow()));
row.put("thread", info.getThreadId());
// 生成路径
String path = StringHelper.getCodeString(pathFormat, row);
// 追加到文件
FileHelper.writeFileAppend(new File(path), sb.toString(), "UTF-8");
}
}
}