一直都是查看日志,看日志里的异常,看最近几天的日志。
今天听课,老师提到“日志一般保存几天”这个点,然后发现我们的日志都是保留最近七天的,这是怎么设置的呢?
首先说我们用的日志是log4j 1.2
然后是我们日志的一个输出形式,具体自行百度:
<appender name="pay" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="/home/www/logs/prod/pay/pay.log" /> <param name="DatePattern" value="'.'yyyy-MM-dd" /> <param name="Append" value="true" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %5p [%t] (%F:%L) - %m%n" /> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <logger name="pay"> <level value="info" /> <appender-ref ref="pay" /> </logger>
我百度了一下,DailyRollingFileAppender,DatePattern '.'yyyy-MM-dd 的设置,也无法设置保留几天的日志啊。
终归结果就是log4j1.2并不带这种保留几天或者删除几天前的日志的功能。
然后网上给出的方案是,linux定时清理几天以前的,没想到我们项目真的是这么实现的。
第一步,有一个清理的脚本
logclean.sh find /home/www/logs/test/ -maxdepth 1 -type f -mtime +7 -name '*' -exec rm -rf {} \; find /home/www/logs/test/pay/ -maxdepth 1 -type f -mtime +30 -name '*' -exec rm -rf {} \; find /home/www/logs/test/userlog/ -maxdepth 1 -type f -mtime +7 -name '*' -exec rm -rf {} \;
有这个脚本,肯定是定时执行的吧,不能每天人工去执行吧。然后百度一下,是linux的定时任务corn。
赶紧记下来哦,不过面试的时候好像从来没问过。