用logrote和split分割nohup.out日志

简介: 用logrote和split分割nohup.out日志

背景:在生产环境中使用 nohup 运行 JAR 包时,会产生大量日志文件,导致磁盘存储占用过高,例如每天可能产生约30GB的日志数据。

解决方案:

  1. 使用 split 分割日志文件:
this_path=$(cd /app/query4a/; pwd)
echo $this_path
current_date=$(date -d "-1 day" "+%Y%m%d")
echo $current_date
cp /app/query4a/nohup.out /app/query4a/split_log/${current_date}.log
cat /dev/null > /app/query4a/nohup.out
  • 缺点:当日志量较大时,执行速度较慢,并且清空后的 nohup 文件需要一段时间才能开始存储新的日志数据。
  1. 使用 logrotate 分割并压缩日志:
  • 创建 /etc/logrotate.d/query4a 脚本,内容如下:
/app/query4a/nohup.out {
    daily             # 每天分割一次
    #size 5M          # 源文件小于5M时不分割
    rotate 180        # 保留180个旧日志文件
    copytruncate      # 复制并清空日志文件,而不是创建新文件
    notifempty        # 当日志文件为空时不分割
    missingok         # 如果日志文件不存在,则忽略错误
    dateext           # 切割后的文件添加日期作为后缀
    dateyesterday     # 使用昨天的日期作为分割后日志的后缀
    dateformat -%Y-%m-%d  # 指定日期格式
    compress          # 压缩旧日志文件
    create 0644 appuser appuser  # 创建新日志文件的权限和所属用户
}
  • 该配置会每天对日志文件进行分割,并保留180个旧日志文件。压缩旧日志文件以节省磁盘空间,并确保新的日志文件会及时生成。
  1. 在启动程序时将日志输出重定向到 /dev/null
nohup java -jar xx.jar > /dev/null 2>&1 &
  • 如果不希望生成 nohup.out 日志文件,可以在启动程序时将日志输出重定向到 /dev/null。这样可以避免产生大量的日志文件,并减少对磁盘存储的影响。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
Java Windows
SpringBoot:Windows平台下JAR包的启动,停止和日志分割脚本
SpringBoot:Windows平台下JAR包的启动,停止和日志分割脚本
2207 0
SpringBoot:Windows平台下JAR包的启动,停止和日志分割脚本
|
Java Maven 索引
Logback:同时按照日期和大小分割日志(最新日志可以不带日期或数字)
Logback:同时按照日期和大小分割日志(最新日志可以不带日期或数字)
1203 0
Logback:同时按照日期和大小分割日志(最新日志可以不带日期或数字)
|
5月前
|
Java
log4j支持同时按日期和文件大小分割日志
log4j支持同时按日期和文件大小分割日志
42 0
|
11月前
|
安全 应用服务中间件 nginx
Linux-日志系统与日志分割
Linux-日志系统与日志分割
129 0
|
分布式计算 Java Hadoop
python 日志分割器 大文本处理
python 日志分割器 大文本处理
114 0
|
存储 消息中间件 设计模式
请问你知道分布式系统设计模式的分割日志思想么?
请问你知道分布式系统设计模式的分割日志思想么?
请问你知道分布式系统设计模式的分割日志思想么?
|
存储 消息中间件 设计模式
分布式系统设计模式 - 分割日志(Segmented Log)
分布式系统设计模式 - 分割日志(Segmented Log)
分布式系统设计模式 - 分割日志(Segmented Log)
|
应用服务中间件
Tomcat日志实现每天切割(通过Cronolog实现日志分割)
Tomcat日志,如果不做切割处理,会导致日志输出会越来越大,不方便后续的问题追踪。 所以我们对日志文件进行按天进行分割。
631 0
Tomcat日志实现每天切割(通过Cronolog实现日志分割)
|
1天前
|
关系型数据库 MySQL 数据库
mysql数据库bin-log日志管理
mysql数据库bin-log日志管理
|
1天前
|
存储 关系型数据库 数据库
关系型数据库文件方式存储LOG FILE(日志文件)
【5月更文挑战第11天】关系型数据库文件方式存储LOG FILE(日志文件)
7 1

热门文章

最新文章