Mercurial Hosting > luan
comparison src/goodjava/logger/DailyRollingFileAppender.java @ 1600:8a717f0b7f45
add DailyRollingFileAppender.deleteAfter
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Fri, 09 Apr 2021 19:44:14 -0600 |
| parents | 329197048ff0 |
| children |
comparison
equal
deleted
inserted
replaced
| 1599:f2a663a4ba9e | 1600:8a717f0b7f45 |
|---|---|
| 1 package goodjava.logger; | 1 package goodjava.logger; |
| 2 | 2 |
| 3 import java.io.FileWriter; | 3 import java.io.FileWriter; |
| 4 import java.io.File; | |
| 4 import java.io.IOException; | 5 import java.io.IOException; |
| 5 import java.text.DateFormat; | 6 import java.text.DateFormat; |
| 6 import java.util.Date; | 7 import java.util.Date; |
| 7 | 8 |
| 8 | 9 |
| 9 public final class DailyRollingFileAppender extends WriterAppender { | 10 public final class DailyRollingFileAppender extends WriterAppender { |
| 10 private final DateFormat format; | 11 private final DateFormat format; |
| 11 private String fileName; | 12 private String fileName; |
| 13 public long deleteAfter = 0; | |
| 12 | 14 |
| 13 public DailyRollingFileAppender(Layout layout,DateFormat format) { | 15 public DailyRollingFileAppender(Layout layout,DateFormat format) { |
| 14 super(layout,null); | 16 super(layout,null); |
| 15 this.format = format; | 17 this.format = format; |
| 16 } | 18 } |
| 19 String newFileName = format.format(new Date()); | 21 String newFileName = format.format(new Date()); |
| 20 if( !newFileName.equals(fileName) ) { | 22 if( !newFileName.equals(fileName) ) { |
| 21 fileName = newFileName; | 23 fileName = newFileName; |
| 22 if( writer != null ) | 24 if( writer != null ) |
| 23 close(); | 25 close(); |
| 26 sweep(); | |
| 24 try { | 27 try { |
| 25 writer = new FileWriter(fileName,true); | 28 writer = new FileWriter(fileName,true); |
| 26 } catch(IOException e) { | 29 } catch(IOException e) { |
| 27 throw new RuntimeException(e); | 30 throw new RuntimeException(e); |
| 28 } | 31 } |
| 29 } | 32 } |
| 30 super.append(event); | 33 super.append(event); |
| 31 } | 34 } |
| 35 | |
| 36 private void sweep() { | |
| 37 if( deleteAfter <= 0 ) | |
| 38 return; | |
| 39 long expired = System.currentTimeMillis() - deleteAfter; | |
| 40 File dir = new File(fileName).getParentFile(); | |
| 41 for( File file : dir.listFiles() ) { | |
| 42 if( file.lastModified() < expired ) | |
| 43 file.delete(); | |
| 44 } | |
| 45 } | |
| 32 } | 46 } |
