Skip to content

Commit 23a992a

Browse files
author
yikangfeng
committed
修改SimpleDateFormat format方法线程不安全问题
1 parent 5d3ccb0 commit 23a992a

File tree

1 file changed

+27
-21
lines changed

1 file changed

+27
-21
lines changed

sentinel-core/src/main/java/com/alibaba/csp/sentinel/log/CspFormatter.java

+27-21
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,33 @@
2828
*/
2929
class CspFormatter extends Formatter {
3030

31-
private final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
31+
private final ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = new ThreadLocal<SimpleDateFormat>() {
32+
@Override
33+
public SimpleDateFormat initialValue() {
34+
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
35+
}
36+
};
3237

33-
@Override
34-
public String format(LogRecord record) {
35-
StringBuilder builder = new StringBuilder(1000);
36-
builder.append(df.format(new Date(record.getMillis()))).append(" ");
37-
builder.append(formatMessage(record));
38+
@Override
39+
public String format(LogRecord record) {
40+
final DateFormat df = dateFormatThreadLocal.get();
41+
StringBuilder builder = new StringBuilder(1000);
42+
builder.append(df.format(new Date(record.getMillis()))).append(" ");
43+
builder.append(formatMessage(record));
3844

39-
String throwable = "";
40-
if (record.getThrown() != null) {
41-
StringWriter sw = new StringWriter();
42-
PrintWriter pw = new PrintWriter(sw);
43-
pw.println();
44-
record.getThrown().printStackTrace(pw);
45-
pw.close();
46-
throwable = sw.toString();
47-
}
48-
builder.append(throwable);
49-
if ("".equals(throwable)) {
50-
builder.append("\n");
51-
}
52-
return builder.toString();
53-
}
45+
String throwable = "";
46+
if (record.getThrown() != null) {
47+
StringWriter sw = new StringWriter();
48+
PrintWriter pw = new PrintWriter(sw);
49+
pw.println();
50+
record.getThrown().printStackTrace(pw);
51+
pw.close();
52+
throwable = sw.toString();
53+
}
54+
builder.append(throwable);
55+
if ("".equals(throwable)) {
56+
builder.append("\n");
57+
}
58+
return builder.toString();
59+
}
5460
}

0 commit comments

Comments
 (0)