Mercurial Hosting > luan
diff src/goodjava/webserver/handlers/LogHandler.java @ 1594:329197048ff0
add DailyRollingFileAppender
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 21 Mar 2021 00:59:58 -0600 |
parents | 27efb1fcbcb5 |
children | c78d6a4e2d9a |
line wrap: on
line diff
--- a/src/goodjava/webserver/handlers/LogHandler.java Sat Mar 20 22:29:01 2021 -0600 +++ b/src/goodjava/webserver/handlers/LogHandler.java Sun Mar 21 00:59:58 2021 -0600 @@ -1,24 +1,72 @@ package goodjava.webserver.handlers; +import java.io.File; +import java.io.IOException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import goodjava.logging.Logger; -import goodjava.logging.LoggerFactory; +import goodjava.logger.Layout; +import goodjava.logger.ListLayout; +import goodjava.logger.DateLayout; +import goodjava.logger.Layouts; +import goodjava.logger.Appender; +import goodjava.logger.ConsoleAppender; +import goodjava.logger.DailyRollingFileAppender; +import goodjava.logger.GoodLogger; +import goodjava.logger.Level; +import goodjava.io.IoUtils; import goodjava.webserver.Handler; import goodjava.webserver.Request; import goodjava.webserver.Response; public final class LogHandler implements Handler { - private static final Logger logger = LoggerFactory.getLogger("HTTP"); + + public static Logger consoleLogger() { + Layout layout = new ListLayout(new DateLayout("yyyy-MM-dd:HH:mm:ss")," ",Layouts.MESSAGE,"\n"); + Appender appender = new ConsoleAppender(layout,System.err); + GoodLogger logger = new GoodLogger("HTTP"); + logger.appender = appender; + logger.level = Level.INFO; + return logger; + } + + public static Logger dirLogger(File dir) { + if( dir.exists() && !dir.isDirectory() ) + throw new RuntimeException("must be a directory"); + try { + IoUtils.mkdirs(dir); + } catch(IOException e) { + throw new RuntimeException(e); + } + Layout layout = new ListLayout(new DateLayout("yyyy-MM-dd:HH:mm:ss")," ",Layouts.MESSAGE,"\n"); + DateFormat fmt = new SimpleDateFormat( "'" + dir + "/'yyyy_MM_dd_HH_mm'.log'" ); + Appender appender = new DailyRollingFileAppender(layout,fmt); + GoodLogger logger = new GoodLogger("HTTP"); + logger.appender = appender; + logger.level = Level.INFO; + return logger; + } private final Handler handler; + private final Logger logger; public LogHandler(Handler handler) { + this(handler,consoleLogger()); + } + + public LogHandler(Handler handler,Logger logger) { this.handler = handler; + this.logger = logger; } public Response handle(Request request) { Response response = handler.handle(request); - logger.info( request.method + " " + request.path + " " + response.status.code + " " + response.body.length ); + if( response == null ) + return null; + String ip = (String)request.headers.get("x-real-ip"); + //String agent = (String)request.headers.get("user-agent"); + logger.info( ip + " \"" + request.method + " " + request.path + "\" " + response.status.code + " " + response.body.length ); return response; } }