Mercurial Hosting > luan
comparison src/goodjava/logger/RollingFileAppender.java @ 1449:dd14d2dce7ee
add appenders
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 28 Feb 2020 21:14:23 -0700 |
parents | |
children | 6c6ce14db6a8 |
comparison
equal
deleted
inserted
replaced
1448:6fc083e1d08c | 1449:dd14d2dce7ee |
---|---|
1 package goodjava.logger; | |
2 | |
3 import java.io.File; | |
4 import java.io.FileWriter; | |
5 import java.io.IOException; | |
6 | |
7 | |
8 public class RollingFileAppender extends WriterAppender { | |
9 protected final String fileName; | |
10 protected final File file; | |
11 public long maxFileSize = 10*1024*1024; | |
12 public int backups = 1; | |
13 | |
14 public RollingFileAppender(Layout layout,String fileName) throws IOException { | |
15 super(layout,null); | |
16 this.fileName = fileName; | |
17 this.file = new File(fileName); | |
18 open(); | |
19 } | |
20 | |
21 protected void open() throws IOException { | |
22 this.writer = new FileWriter(file,true); | |
23 } | |
24 | |
25 public synchronized void append(LoggingEvent event) { | |
26 super.append(event); | |
27 if( file.length() > maxFileSize ) { | |
28 rollOver(); | |
29 } | |
30 } | |
31 | |
32 protected void rollOver() { | |
33 close(); | |
34 File backup = new File(fileName+'.'+backups); | |
35 if( backup.exists() ) { | |
36 if( !backup.delete() ) | |
37 debug("couldn't delete "+backup); | |
38 } | |
39 for( int i=backups-1; i>=1; i-- ) { | |
40 File f = backup; | |
41 backup = new File(fileName+'.'+i); | |
42 backup.renameTo(f); | |
43 } | |
44 if( !file.renameTo(backup) ) | |
45 debug("couldn't rename "+file+" to "+backup); | |
46 try { | |
47 open(); | |
48 } catch(IOException e) { | |
49 throw new RuntimeException(e); | |
50 } | |
51 } | |
52 | |
53 protected void debug(String msg) { | |
54 System.err.println("RollingFileAppender: "+msg); | |
55 } | |
56 } |