Mercurial Hosting > luan
view src/goodjava/logger/RollingFileAppender.java @ 1469:21f5edab1fbf
minor
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 14 Apr 2020 13:15:18 -0600 |
parents | dd14d2dce7ee |
children | 6c6ce14db6a8 |
line wrap: on
line source
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); } }