Mercurial Hosting > luan
changeset 1600:8a717f0b7f45
add DailyRollingFileAppender.deleteAfter
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 09 Apr 2021 19:44:14 -0600 |
parents | f2a663a4ba9e |
children | de5a81327d9c |
files | src/goodjava/logger/DailyRollingFileAppender.java src/goodjava/webserver/handlers/LogHandler.java src/luan/host/WebHandler.java |
diffstat | 3 files changed, 19 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
diff -r f2a663a4ba9e -r 8a717f0b7f45 src/goodjava/logger/DailyRollingFileAppender.java --- a/src/goodjava/logger/DailyRollingFileAppender.java Mon Apr 05 00:13:05 2021 -0600 +++ b/src/goodjava/logger/DailyRollingFileAppender.java Fri Apr 09 19:44:14 2021 -0600 @@ -1,6 +1,7 @@ package goodjava.logger; import java.io.FileWriter; +import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.util.Date; @@ -9,6 +10,7 @@ public final class DailyRollingFileAppender extends WriterAppender { private final DateFormat format; private String fileName; + public long deleteAfter = 0; public DailyRollingFileAppender(Layout layout,DateFormat format) { super(layout,null); @@ -21,6 +23,7 @@ fileName = newFileName; if( writer != null ) close(); + sweep(); try { writer = new FileWriter(fileName,true); } catch(IOException e) { @@ -29,4 +32,15 @@ } super.append(event); } + + private void sweep() { + if( deleteAfter <= 0 ) + return; + long expired = System.currentTimeMillis() - deleteAfter; + File dir = new File(fileName).getParentFile(); + for( File file : dir.listFiles() ) { + if( file.lastModified() < expired ) + file.delete(); + } + } }
diff -r f2a663a4ba9e -r 8a717f0b7f45 src/goodjava/webserver/handlers/LogHandler.java --- a/src/goodjava/webserver/handlers/LogHandler.java Mon Apr 05 00:13:05 2021 -0600 +++ b/src/goodjava/webserver/handlers/LogHandler.java Fri Apr 09 19:44:14 2021 -0600 @@ -31,7 +31,7 @@ return logger; } - public static Logger dirLogger(File dir) { + public static Logger dirLogger(File dir,long deleteAfter) { if( dir.exists() && !dir.isDirectory() ) throw new RuntimeException("must be a directory"); try { @@ -40,7 +40,8 @@ throw new RuntimeException(e); } DateFormat fmt = new SimpleDateFormat( "'" + dir + "/'yyyy_MM_dd'.log'" ); - Appender appender = new DailyRollingFileAppender(layout,fmt); + DailyRollingFileAppender appender = new DailyRollingFileAppender(layout,fmt); + appender.deleteAfter = deleteAfter; GoodLogger logger = new GoodLogger("HTTP"); logger.appender = appender; logger.level = Level.INFO;
diff -r f2a663a4ba9e -r 8a717f0b7f45 src/luan/host/WebHandler.java --- a/src/luan/host/WebHandler.java Mon Apr 05 00:13:05 2021 -0600 +++ b/src/luan/host/WebHandler.java Fri Apr 09 19:44:14 2021 -0600 @@ -27,6 +27,7 @@ public class WebHandler implements Handler { private static final Logger logger = LoggerFactory.getLogger(WebHandler.class); + private static final long days30 = 1000L*60*60*24*30; private static final class MyHandler implements Handler { private final Handler handler; @@ -65,7 +66,7 @@ handler = new ListHandler( handler, notFoundHander ); handler = new ContentTypeHandler(handler); handler = new SafeHandler(handler); - handler = new LogHandler(handler,LogHandler.dirLogger(new File(logDir))); + handler = new LogHandler(handler,LogHandler.dirLogger(new File(logDir),days30)); return new MyHandler(handler,luanHandler); }