annotate src/goodjava/logger/DailyRollingFileAppender.java @ 1809:90187946d1a4

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 12 May 2024 17:15:33 -0600
parents 8a717f0b7f45
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1594
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 package goodjava.logger;
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
3 import java.io.FileWriter;
1600
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
4 import java.io.File;
1594
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 import java.io.IOException;
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
6 import java.text.DateFormat;
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7 import java.util.Date;
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 public final class DailyRollingFileAppender extends WriterAppender {
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11 private final DateFormat format;
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12 private String fileName;
1600
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
13 public long deleteAfter = 0;
1594
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15 public DailyRollingFileAppender(Layout layout,DateFormat format) {
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
16 super(layout,null);
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17 this.format = format;
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18 }
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
19
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20 public synchronized void append(LoggingEvent event) {
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
21 String newFileName = format.format(new Date());
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22 if( !newFileName.equals(fileName) ) {
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23 fileName = newFileName;
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24 if( writer != null )
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25 close();
1600
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
26 sweep();
1594
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 try {
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 writer = new FileWriter(fileName,true);
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29 } catch(IOException e) {
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 throw new RuntimeException(e);
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 }
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 }
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33 super.append(event);
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34 }
1600
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
35
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
36 private void sweep() {
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
37 if( deleteAfter <= 0 )
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
38 return;
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
39 long expired = System.currentTimeMillis() - deleteAfter;
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
40 File dir = new File(fileName).getParentFile();
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
41 for( File file : dir.listFiles() ) {
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
42 if( file.lastModified() < expired )
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
43 file.delete();
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
44 }
8a717f0b7f45 add DailyRollingFileAppender.deleteAfter
Franklin Schmidt <fschmidt@gmail.com>
parents: 1594
diff changeset
45 }
1594
329197048ff0 add DailyRollingFileAppender
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
46 }