问题由来:使用springboot开发项目,最后生成的jar包在Linux(本人使用CentOS)系统下通过以下命令运行
nohup java -jar -Xms512m -Xmx512m /use/local/eureka.jar >> /use/local/logs/eureka-$(date +%Y-%m-%d).log 2>&1 &
本以为会按照日期进行日志分割,结果却是只生成了一个文件,并没有按照预期,最终导致文件过大,查看清理都变得困难了。
解决方案:通过Cronolog来进行日志的分割。
1.下载(本来参照其他人文档通过以下地址进行下载,结果失败,搜索该地址失败,所以还是直接搜索资源上传吧。)
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
2.解压
tar zxvf cronolog-1.6.2.tar.gz
3.进入目录进行安装
cd cronolog-1.6.2
./configure
make
make install
4.查看cronolog安装后所在目录(验证安装是否成功)
5.修改jar的启动命令
nohup java -jar -Xms512m -Xmx512m /use/local/eureka.jar | /usr/local/sbin/cronolog /usr/local/logs/eureka.%Y-%m-%d.log 2>&1 &
一天太久,我为了检验成果,则按照小时来分割,命令如下
nohup java -jar -Xms512m -Xmx512m /use/local/eureka.jar | /usr/local/sbin/cronolog /usr/local/logs/eureka.%Y-%m-%d_%H.log 2>&1 &
成果如下,代表日志分割成功。
定时清理日志
新建auto-clean-log.sh文件
#!/bin/sh
LOG_PATH=/usr/local/cloud_platform/conf/logs
save_days=60
find $LOG_PATH -mtime +$save_days -type f -name "*.log" -exec rm -rf {} \;
增加可执行权限
cd /usr/local/cloud_platform/conf
chmod -R 777 auto-clean-log.sh
加入计划任务,每个月1号的00:01分执行一次清理计划,清理60天前的日志(分,时,日,月,周 取值:* 取值范围内的所有数字 / 每过多少个数字 - 从X到Z ,散列数字)
crontab -e
编辑任务
1 0 1 * * /usr/local/cloud_platform/conf/auto-clean-log.sh
命令详解
#加入定时任务
crontab -e
#编辑任务
1 0 1 * * /usr/local/cloud_platform/conf/auto-clean-log.sh
#查看任务
crontab -l
#删除定时任务(千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。)
crontab -r
#查看crontab服务状态:
service crond status
#手动启动crontab服务
service crond start
#手动关闭crontab服务
service crond stop
#手动重启crontab服务
service crond restart
#重新载入crontab服务
service crond reload
#查看crontab服务是否已设置为开机启动,执行命令:
ntsysv
#加入开机自动启动:
#chkconfig –level 35 crond on