Java中Jar包部署nohup后台启动定时按日期分割日志

JAVA中JAR包部署nohup后台启动定时按日期分割日志

前言:在JAVA开发中很多没有用docker部署,而是选择传统的Jar包部署方式,这样就涉及日志的产生,如果直接部署日志文件会越来越大,程序怎么可能不出现问题,这样打开日志文件就会很慢,不方便后续问题的定位和解决。这样就要采取优化方案,对日志进行分割,这样便于查看。

1.创建Shell脚本nohup_log.sh

#创建文件
touch nohup_log.sh
#增加权限
chmod 777 ./nohup_log.sh

#复制粘贴下方内容
#创建日志文件夹
log_dir="/usr/local/debug/logs"
# 拷贝日志文件到昨天的log中
cp $log_dir/nohup.out $log_dir/nohup`date -d yesterday +%Y%m%d`.log
# 清空nohup.out日志
cat /dev/null > $log_dir/nohup.out
# 删除14天以前的日志(可加可不加,自动删除14天以前的日志,只保留近15天的日志,需要就加,然后把#号去掉)
#find $log_dir -mtime +14 -name 'nohup*.log' -exec rm -rf {
    
    } \;

2. 执行nohup_log.sh脚本文件

#执行启动命令
sh nohup_log.sh

3.将脚本执行加入定时任务中

#执行
crontab -e
#加入执行任务 每天凌晨执行
0 0 * * * /usr/local/debug/nohup_log.sh
#按Esc键后再输入:wq!,回车保存
#查看是否创建成功
crontab -l

4.任务生效

#执行任务生效命令
service crond restart

5.生成效果

在这里插入图片描述
每天生成的日志文件都会标注上日期,当天的日志会存于nohup.out中,这样就完成了每天的日志分割。注:如果切割的文件是在实时写进去的话,这个时候如果清空文件,会产生“文件空洞”(文件大小暂时是0,当有写入的话,打下会立马回到清空之前的大小,但是之前的都是空。这就是文件空洞)。解决方法:对于java项目来说,在指定写入日志的配置地方,需要用两个 “>” ,这样的话清空文件时,写入位置置零,追加写入会从起始位置开始写入,不会产生文件空洞 例如:

nohup java -jar /app/web.jar --spring.config.location=/app/application-ali.yml > /app/log.out 2>&1 &
改成
nohup java -jar /app/web.jar --spring.config.location=/app/application-ali.yml >> /app/log.out 2>&1 &

猜你喜欢

转载自blog.csdn.net/qq_43842093/article/details/135038122