Skip to content

Commit 1115ce2

Browse files
committed
Removed unnecessary ThreadLocal (...)
SimpleDateFormat is not thread-safe, but in this case is a private field without getter, and is used only in a synchronized method.
1 parent 824352c commit 1115ce2

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

src/main/java/it/albertus/util/logging/TimeBasedRollingFileHandler.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,9 @@
1616

1717
public class TimeBasedRollingFileHandler extends Handler {
1818

19-
private final ThreadLocal<DateFormat> dateFormats = new ThreadLocal<DateFormat>() {
20-
@Override
21-
protected DateFormat initialValue() {
22-
return new SimpleDateFormat(datePattern);
23-
}
24-
};
25-
2619
private final String fileNamePattern;
2720
private final String datePattern;
21+
private final DateFormat dateFormat;
2822
private final ISupplier<Date> dateSupplier;
2923

3024
private EnhancedFileHandler underlyingFileHandler;
@@ -41,9 +35,10 @@ public Date get() {
4135
TimeBasedRollingFileHandler(final TimeBasedRollingFileHandlerConfig config, final ISupplier<Date> dateSupplier) throws IOException {
4236
this.fileNamePattern = config.getFileNamePattern();
4337
this.datePattern = config.getDatePattern();
38+
this.dateFormat = new SimpleDateFormat(datePattern);
4439
this.dateSupplier = dateSupplier;
4540

46-
final FileHandlerConfig underlyingFileHandlerConfig = new FileHandlerConfig(config.getLevel(), config.getFilter(), config.getFormatter(), config.getEncoding(), config.getLimit(), config.getCount(), config.isAppend(), generateFileHandlerPattern(config.getFileNamePattern(), dateFormats.get(), dateSupplier));
41+
final FileHandlerConfig underlyingFileHandlerConfig = new FileHandlerConfig(config.getLevel(), config.getFilter(), config.getFormatter(), config.getEncoding(), config.getLimit(), config.getCount(), config.isAppend(), generateFileHandlerPattern(config.getFileNamePattern(), dateFormat, dateSupplier));
4742
underlyingFileHandler = new EnhancedFileHandler(underlyingFileHandlerConfig);
4843
}
4944

@@ -53,7 +48,7 @@ public synchronized void publish(final LogRecord rec) {
5348
return;
5449
}
5550

56-
final String fileHandlerPattern = generateFileHandlerPattern(fileNamePattern, dateFormats.get(), dateSupplier);
51+
final String fileHandlerPattern = generateFileHandlerPattern(fileNamePattern, dateFormat, dateSupplier);
5752
if (!fileHandlerPattern.equals(underlyingFileHandler.getPattern())) { // check if date has changed
5853
try {
5954
final EnhancedFileHandler oldFileHandler = underlyingFileHandler; // must be closed at the end!
@@ -91,7 +86,6 @@ public void flush() {
9186
@Override
9287
public void close() {
9388
underlyingFileHandler.close();
94-
dateFormats.remove(); // Not a solution but better than nothing
9589
}
9690

9791
public String getDatePattern() {

0 commit comments

Comments
 (0)