springboot项目使用nohup将日志指定输出文件过大问题及解决办法

 更新时间:2024年10月12日 09:37:25   作者: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文件过大内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring中ApplicationContextAware的使用方法详解

    Spring中ApplicationContextAware的使用方法详解

    ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法,这篇文章主要介绍了Spring中ApplicationContextAware的作用,需要的朋友可以参考下
    2023-03-03
  • 在Linux系统上升级Java版本的两种方法步骤

    在Linux系统上升级Java版本的两种方法步骤

    由于项目升级,需要将JDK7升级到JDK8,升级JDK的同时也要升级一些其他的版本,下面这篇文章主要给大家介绍了关于在Linux系统上升级Java版本的两种方法步骤,需要的朋友可以参考下
    2024-09-09
  • SpringBoot实现EMQ设备的上下线告警

    SpringBoot实现EMQ设备的上下线告警

    EMQX 的上下线系统消息通知功能在客户端连接成功或者客户端断开连接,需要实现设备的上下线状态监控,所以本文给大家介绍了如何通过SpringBoot实现EMQ设备的上下线告警,文中有详细的代码示例,需要的朋友可以参考下
    2023-10-10
  • java环境中的JDK、JVM、JRE详细介绍

    java环境中的JDK、JVM、JRE详细介绍

    这篇文章主要介绍了java环境中的JDK、JVM、JRE详细介绍的相关资料,对于初学者还是有必要了解下,细致说明他们是什么,需要的朋友可以参考下
    2016-11-11
  • java中注解的实现原理详解

    java中注解的实现原理详解

    这篇文章主要介绍了java中注解的实现原理详解,注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解,需要的朋友可以参考下
    2023-10-10
  • Spring Boot3整合Mybatis Plus的详细过程(数据库为MySQL)

    Spring Boot3整合Mybatis Plus的详细过程(数据库为MySQL)

    这篇文章主要介绍了Spring Boot3整合Mybatis Plus的详细过程(数据库为MySQL),本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • maven 传递依赖的实现

    maven 传递依赖的实现

    本文主要介绍了Maven中传递依赖的处理方式,如scope=compile影响依赖传递,使用排除不需要的依赖,以及如何通过查看依赖树解决运行时错误,特别是在依赖排除后可能导致的运行时缺少必需包的问题,感兴趣的可以了解一下
    2024-10-10
  • IDEA 插件 mapper和xml互相跳转操作

    IDEA 插件 mapper和xml互相跳转操作

    这篇文章主要介绍了IDEA 插件 mapper和xml互相跳转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 基于SpringBoot实现Web应用的登录与退出功能

    基于SpringBoot实现Web应用的登录与退出功能

    登录与退出功能作为 Web 应用中的基础且重要的组成部分,直接关系到用户的安全和隐私保护,所以本文给大家介绍了基于SpringBoot实现Web应用的登录与退出功能,文中有详细的代码供大家参考,需要的朋友可以参考下
    2024-04-04
  • 深入理解Java Socket通信

    深入理解Java Socket通信

    本篇文章主要介绍了深入理解Java Socket,Java中的网络通信是通过Socket实现的,Socket分为ServerSocket和Socket两大类,有兴趣的可以了解一下
    2017-02-02

最新评论