定时删除centos服务器日志

        现在java程序的日志一般是使用log4j+slf4j 来打日志,并且一般都喜欢用DailyRollingFileAppender模式,就是每天产生一个日志,还有一种是 RollingFileAppender模式,这个模式是按文件大小来保存,可以设置文件个数来保存日志,而DailyRollingFileAppender模式的是不能设置文件个数的,就是说每天会产生一个,直至你的磁盘满了。所以我们希望每天能产生一个日志,方便查看,也希望能够自动删除一些旧的日志,维持磁盘的稳定。
 按希望的规则产生日志 log4j已经帮我们做了,我们现在要考虑就只是怎么定时删除日志了,一般两种方式:
1.重写 DailyRollingFileAppender
2.在服务器中创建定时任务自动删除过期的日志
第一种方法在这里就不说了,下面会给出链接和资源,第二种方法就是使用centos的定时任务了。
1.建立shell脚本,
在某个文件夹下,新建文件test_remove_log.sh,
使用touch命令即可: touch test_remove_log.sh
再建立几个log文件测试用,如下:有三个log结尾的文件1.log,2.log,22.log和test_remove_log.sh文件

2.编写sh脚本:
使用vim命令: vim test_remove_log.sh 打开文件 再按‘i’进行编辑 如下:

#!/bin/sh
  find /home/usr001/data/sharedparking/ -name "*2.log*" | xargs rm -rf
再按esc键,退出编辑状态,再输入 ' :wq ' 保存退出,脚本的含义是查询/home/usr001/data/sharedparking/目录下名称包含2.log的文件并删除
在我这里符合条件的是2.log和22.log
3.设置脚本权限
输入: chmod go+rwx test_remove_log.sh
表示文件 test_remove_log.sh 给群组和其他人 读写执行 的权限
4.创建定时任务
‘crontab -e’ 命令,按‘i’开启编辑 ,编辑完按esc键,输入‘ :wq ’保存退出;下面的表示每天的15:30执行 test_remove_log.sh脚本

再输入 /bin/systemctl start crond.service 启动定时任务
查询定时任务
crontab -l ,
删除定时任务

crontab -r


等定时任务执行完,可以看到2.log和22.log被删除了。


启动定时任务:/bin/systemctl start crond.service
停止定时任务:/bin/systemctl stop crond.service
重启定时任务:/bin/systemctl restart crond.service
查看定时任务状态:/bin/systemctl status crond.service

这里脚本只是简单的查询文件删除文件操作,通常我们要删除日志,一般是需要删除旧的日志,比如,定时删除7天之前的日志,
就是只保留一个星期的日志 这就需要用到 -mtime 命令,脚本可修改为
#!/bin/sh
find /home/usr001/data/sharedparking/-mtime +7 -name "*2.log*" | xargs rm -rf
第一种重写 DailyRollingFileAppender的方法,
1.https://www.cnblogs.com/rembau/p/5201001.html, CSDN也有源码资源,查查就能找到
其他参考资料:

2. http://blog.csdn.net/jingcangsen/article/details/56666439

3. http://blog.csdn.net/daxiang12092205/article/details/52125558






你可能感兴趣的:(日志,centos,定时任务)