1616
1717public 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