Mercurial Hosting > luan
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/goodjava/logger/RollingFileAppender.java Fri Feb 28 21:14:23 2020 -0700 @@ -0,0 +1,56 @@ +package goodjava.logger; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + + +public class RollingFileAppender extends WriterAppender { + protected final String fileName; + protected final File file; + public long maxFileSize = 10*1024*1024; + public int backups = 1; + + public RollingFileAppender(Layout layout,String fileName) throws IOException { + super(layout,null); + this.fileName = fileName; + this.file = new File(fileName); + open(); + } + + protected void open() throws IOException { + this.writer = new FileWriter(file,true); + } + + public synchronized void append(LoggingEvent event) { + super.append(event); + if( file.length() > maxFileSize ) { + rollOver(); + } + } + + protected void rollOver() { + close(); + File backup = new File(fileName+'.'+backups); + if( backup.exists() ) { + if( !backup.delete() ) + debug("couldn't delete "+backup); + } + for( int i=backups-1; i>=1; i-- ) { + File f = backup; + backup = new File(fileName+'.'+i); + backup.renameTo(f); + } + if( !file.renameTo(backup) ) + debug("couldn't rename "+file+" to "+backup); + try { + open(); + } catch(IOException e) { + throw new RuntimeException(e); + } + } + + protected void debug(String msg) { + System.err.println("RollingFileAppender: "+msg); + } +}