嵌入式码头中的setRetainDays无法正常工作

时间:2018-04-06 10:17:32

标签: embedded-jetty jetty-9

我正在使用嵌入式jetty 9.2.22并发现http访问日志没有被删除,即使我将retaindays设置为0或1.在为retaindays设置0或1之后,我已经更改了系统时间并启动了码头,发现http访问日志没有被删除。

RequestLogHandler requestLogHandler = new RequestLogHandler();
NCSARequestLog requestLog = new NCSARequestLog();

String filename = System.getProperty("user.dir") "/logs/http-yyyy_mm_dd.log";
File file = new File(filename);
file.getParentFile().mkdirs();
requestLog.setFilename(filename);
requestLog.setAppend("true");
requestLog.setExtended("false");
requestLog.setLogCookies(false));
requestLog.setLogTimeZone("GMT");           
requestLog.setRetainDays(0);
requestLogHandler.setRequestLog(requestLog);
handlers.addHandler(requestLogHandler);

1 个答案:

答案 0 :(得分:1)

retainDays 0有效地禁用了整个retainDays逻辑,并且没有文件被删除。

https://github.com/eclipse/jetty.project/blob/jetty-9.4.9.v20180320/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java#L333

最小的合法价值是1

备用选项是使用org.eclipse.jetty.server.Slf4jRequestLog而不是NCSARequestLog,并让您选择的日志库在您选择的任何配置上进行文件轮换,存档和保留。