我正在观察的问题:
在一天的随机时间,日志开始转到.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>
答案 0 :(得分:1)
这是一个关于logback实现的漏洞,通常在滚动与其gzip /压缩层结合时出现。
答案 1 :(得分:0)
我的情况略有不同,因为我看到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>
不以&#34; $ {catalina.base} /&#34;开头。
一旦我完成了两条路径,我就停止看到日志滚动时生成新的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>