springboot项目使用nohup将日志指定输出文件过大问题及解决办法
作者:z不像程序员的程序猿
在Spring Boot项目中,使用nohup命令重定向日志输出到文件可能会使日志文件过大,文章介绍了两种解决方法:一是创建脚本直接清除日志文件,二是创建脚本保留部分日志内容,并将这些脚本加入定时任务中,这可以有效控制日志文件的大小,避免占用过多磁盘空间
springboot项目使用nohup将日志指定输出文件过大解决办法
假设目前有一个start.sh文件,内容为以下:
#!/bin/sh jarname='app-gmt' pid=`ps aux | grep $jarname | grep -v grep | grep java | awk '{print $2}'` if [ "$pid" == "" ] then echo $jarname"进程不存在, 直接启动"$jarname"系统" else echo "准备杀掉"$jarnamed"进程: "$pid kill -9 $pid fi nohup java -jar $jarname.jar --spring.profiles.active=online -server -Xms512m -Xmx1024m -Xss256k >> ./run.log 2>&1 & echo "start success!!!"
注意看 nohup … >> ./run.log 2>&1 & 这一行,这里是将该进程的日志全部输出到指定的文件里,应该有不少人是这么做的。
那么这样做会出现一种情况,就是run.log会越来越大,直到爆炸。
该怎么解决呢?
一共分为两个步骤:
1.先创建一个清理日志文件的脚本 1.直接清除方式 2.保留部分方式 2.再创建一个定时任务(比如凌晨五点执行一次脚本)
下面对这两部进行细说:
第一点:这点其实是要看个人的具体需求的,比如清除的条件,可以是文件达到多大进行处理,处理时有的会保留一部分,有的会全清掉。
1.先说直接清除方式:
先创建一个脚本文件,内容如下:
#!/bin/bash # 设置文件路径 FILE_PATH="/home/program/app/run.log" # 设置文件大小阈值,单位为字节 THRESHOLD_SIZE=$((100 * 1024 * 1024)) # 获取文件大小 FILE_SIZE=$(du -b "$FILE_PATH" | cut -f1) # 检查文件是否超过阈值 if [ $FILE_SIZE -gt $THRESHOLD_SIZE ]; then # 文件超过阈值,清空文件内容 echo -n > "$FILE_PATH" echo "File has been cleaned up." else echo "File size is within threshold." fi
如果日志文件达到了100M,就清空文件内容。
记得把FILE_PATH改为你自己的日志文件路径
然后加入到定时任务:
crontab -e
内容如下:
0 5 * * * /data/log_clean/clean_app_log_file.sh
记得把路径替换成你自己的文件路径
2.保留部分方式
还是创建一个脚本文件:
log=`tail -n 10000 nohup.out`; echo "$log" > /home/program/app/run.log
记得把路径换成你自己的日志文件路径
然后创建定时任务,跟直接清除方式一样。
到此这篇关于springboot项目使用nohup将日志指定输出文件过大解决办法的文章就介绍到这了,更多相关springboot nohup文件过大内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!