我有一个名为appname
的java程序,它使用logback
和sl4fj
进行记录。
期望:
日志文件每天午夜滚动,所有生成的日志文件将保留30天
设置<maxHistory>30</maxHistory>
使用绝对路径指定日志文件模式,如<fileNamePattern>/var/log/appname/logfile.%d{yyyy-MM-dd}.log</fileNamePattern>
在linux服务器(CentOS)上创建了一个用户appname
,成为java程序appname.jar
的所有者,
/var/log/appname
,只允许此appname
用户运行该程序。
我遇到的问题:
我让它保持运行,不幸的是,appname
程序启动5天后,文件滚动工作正常但是logfile.log(滚动记录当天的数据)消失了,
所有生成的日志文件(前几天日志)仍然存在。
编辑:我运行了两次程序,logfile.log在第4天(我第一次运行它)消失了,并且在第5天(我第二次运行它)消失了
帮助
有没有人对此有任何想法?
我的猜测:
<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>
任何帮助将不胜感激,提前感谢!
答案 0 :(得分:1)
<?xml version="1.0" encoding="UTF-8"?>
经过多天的测试,我发现我的logback文件中缺少上面这行,在我将其添加为我的logback文件的第一行后,滚动工作正常,希望它可以帮助人们与我有类似的问题