为什么我们项目的日志只有最近七天的,是怎么设置的?

一直都是查看日志,看日志里的异常,看最近几天的日志。

今天听课,老师提到“日志一般保存几天”这个点,然后发现我们的日志都是保留最近七天的,这是怎么设置的呢?

首先说我们用的日志是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。

赶紧记下来哦,不过面试的时候好像从来没问过。

上一篇:Docker容器日志查看与清理


下一篇:android数据库的升级的写法