我有一个名为appname
的java程序,它正在使用 logback
和sl4fj
用于记录。
期望:
日志文件每天午夜滚动,所有生成的日志文件将根据以下时间保留 30 天: 设置
<maxHistory>30</maxHistory>
使用绝对路径来指定日志文件模式,如
<fileNamePattern>/var/log/appname/logfile.%d{yyyy-MM-dd}.log</fileNamePattern>
已创建用户
appname
在linux服务器(CentOS)上成为java程序的所有者appname.jar
和/var/log/appname
,只有这个appname
允许用户运行该程序。
我遇到的问题:
不幸的是,在 appname
发生 5 天后,我让它继续运行。程序启动,文件滚动工作正常,但 logfile.log(滚动记录当天的数据)消失,
所有生成的日志文件(前几天的日志)仍然存在。
编辑:我运行了该程序两次,logfile.log 在第 4 天(我第一次运行它)消失了,并在第 5 天(我第二次运行它)消失了
帮助:
有人对此有任何想法吗?
我的猜测:
- 是否与logback&sl4fj有关
- 权限问题?
- 是因为日志文件大小的原因吗(没有设置限制大小,每个15GB左右)?
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern></encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/appname/logfile.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/appname/logfile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5p %c - %m%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="FILE" />
<!-- <appender-ref ref="STDOUT" /> -->
</root>
</configuration>
<logger name="org.apache.zookeeper">
<level value="ERROR"/>
<appender-ref ref="FILE"/>
</logger>
任何帮助将不胜感激,提前致谢!
最佳答案
<?xml version="1.0" encoding="UTF-8"?>
经过多天的测试,我发现我的logback文件中缺少上述行,将其添加为logback文件的第一行后,滚动工作正常,希望它可以帮助与我有类似问题的人。
关于java - logback 文件运行几天后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24025806/