Jetty 访问日志写入 .tmp 文件
Jetty access logs writing to a .tmp file
我观察到的问题:
在一天中的随机时间,日志开始转到 .tmp 文件
access.log6732547707051856.tmp
(它有从 00:00:00 到 00:00:01 的日志,我猜这是可以接受的,当翻转发生时)和 access.log6844458502795078.tmp
是两个有日志的文件。
记录器继续登录到最新的 tmp 文件。我观察到它在早上 6 点左右开始写入 .tmp 文件并继续在那里写入的情况。
这将在下一卷停止,即 00:00:00(午夜),其中压缩了 access.log 文件。 .tmp 文件在此之后仍然存在。
- 为什么临时文件不消失?
- 为什么它会在不应该发生翻转的时候写入临时文件?
系统详情:
我使用的Jetty版本:8.1.15
我正在用
实例化一个新的 RequestLogHandler
RequestLogImpl requestLog = new RequestLogImpl();
requestLog.setFileName("logback-access.xml");
requestLogHandler.setRequestLog(requestLog);
logback-access.xml
有
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/service/package/access-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
这是 logback 实现的一个未解决的错误,通常在滚动与其 gzip / 压缩层结合使用时看到。
我的情况略有不同,因为我看到 tmp 文件带有 logback classic 1.1.3 而不是 logback 访问。
我正在使用具有最大文件大小的 Rolling File Appender。请参阅下面我的最终工作配置。
我的问题是由
之间的差异引起的
<appender ..
<file>${catalina.base}/logs/app-info.log</file>
和
<appender ...
<rollingPolicy ...
<fileNamePattern>logs/app-info-%d{yyyy-MM-dd,UTC}-%i.log.gz</fileNamePattern>
注意两个文件路径之间的区别。
与 <file>
不同,<fileNamePattern>
不以“${catalina.base}/”开头。
一旦我使这两条路径相似,我就不再看到在日志滚动时生成新的 tmp 文件。
Logback 现在生成所需的 log.gz 文件。现有的 tmp 文件保持原样。
最终工作配置。
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/app-info.log</file>
<!-- daily rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/app-info-%d{yyyy-MM-dd,UTC}-%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
...
</appender>
我观察到的问题:
在一天中的随机时间,日志开始转到 .tmp 文件
access.log6732547707051856.tmp
(它有从 00:00:00 到 00:00:01 的日志,我猜这是可以接受的,当翻转发生时)和 access.log6844458502795078.tmp
是两个有日志的文件。
记录器继续登录到最新的 tmp 文件。我观察到它在早上 6 点左右开始写入 .tmp 文件并继续在那里写入的情况。 这将在下一卷停止,即 00:00:00(午夜),其中压缩了 access.log 文件。 .tmp 文件在此之后仍然存在。
- 为什么临时文件不消失?
- 为什么它会在不应该发生翻转的时候写入临时文件?
系统详情:
我使用的Jetty版本:8.1.15
我正在用
实例化一个新的 RequestLogHandlerRequestLogImpl requestLog = new RequestLogImpl();
requestLog.setFileName("logback-access.xml");
requestLogHandler.setRequestLog(requestLog);
logback-access.xml
有
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/service/package/access-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
这是 logback 实现的一个未解决的错误,通常在滚动与其 gzip / 压缩层结合使用时看到。
我的情况略有不同,因为我看到 tmp 文件带有 logback classic 1.1.3 而不是 logback 访问。
我正在使用具有最大文件大小的 Rolling File Appender。请参阅下面我的最终工作配置。
我的问题是由
之间的差异引起的 <appender ..
<file>${catalina.base}/logs/app-info.log</file>
和
<appender ...
<rollingPolicy ...
<fileNamePattern>logs/app-info-%d{yyyy-MM-dd,UTC}-%i.log.gz</fileNamePattern>
注意两个文件路径之间的区别。
与 <file>
不同,<fileNamePattern>
不以“${catalina.base}/”开头。
一旦我使这两条路径相似,我就不再看到在日志滚动时生成新的 tmp 文件。 Logback 现在生成所需的 log.gz 文件。现有的 tmp 文件保持原样。
最终工作配置。
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/app-info.log</file>
<!-- daily rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/app-info-%d{yyyy-MM-dd,UTC}-%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
...
</appender>