用logrote和split分割nohup.out日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 用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包的启动,停止和日志分割脚本
2414 0
SpringBoot:Windows平台下JAR包的启动,停止和日志分割脚本
|
Java Maven 索引
Logback:同时按照日期和大小分割日志(最新日志可以不带日期或数字)
Logback:同时按照日期和大小分割日志(最新日志可以不带日期或数字)
1803 0
Logback:同时按照日期和大小分割日志(最新日志可以不带日期或数字)
|
11月前
|
Java
log4j支持同时按日期和文件大小分割日志
log4j支持同时按日期和文件大小分割日志
178 0
|
安全 应用服务中间件 nginx
Linux-日志系统与日志分割
Linux-日志系统与日志分割
168 0
|
分布式计算 Java Hadoop
python 日志分割器 大文本处理
python 日志分割器 大文本处理
142 0
|
应用服务中间件
Tomcat日志实现每天切割(通过Cronolog实现日志分割)
Tomcat日志,如果不做切割处理,会导致日志输出会越来越大,不方便后续的问题追踪。 所以我们对日志文件进行按天进行分割。
866 1
Tomcat日志实现每天切割(通过Cronolog实现日志分割)
|
存储 消息中间件 设计模式
请问你知道分布式系统设计模式的分割日志思想么?
请问你知道分布式系统设计模式的分割日志思想么?
请问你知道分布式系统设计模式的分割日志思想么?
|
存储 消息中间件 设计模式
分布式系统设计模式 - 分割日志(Segmented Log)
分布式系统设计模式 - 分割日志(Segmented Log)
分布式系统设计模式 - 分割日志(Segmented Log)
|
11天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
116 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
216 3