用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包的启动,停止和日志分割脚本
2444 0
SpringBoot:Windows平台下JAR包的启动,停止和日志分割脚本
|
Java Maven 索引
Logback:同时按照日期和大小分割日志(最新日志可以不带日期或数字)
Logback:同时按照日期和大小分割日志(最新日志可以不带日期或数字)
1871 0
Logback:同时按照日期和大小分割日志(最新日志可以不带日期或数字)
|
Java
log4j支持同时按日期和文件大小分割日志
log4j支持同时按日期和文件大小分割日志
197 0
|
安全 应用服务中间件 nginx
Linux-日志系统与日志分割
Linux-日志系统与日志分割
175 0
|
分布式计算 Java Hadoop
python 日志分割器 大文本处理
python 日志分割器 大文本处理
151 0
|
应用服务中间件
Tomcat日志实现每天切割(通过Cronolog实现日志分割)
Tomcat日志,如果不做切割处理,会导致日志输出会越来越大,不方便后续的问题追踪。 所以我们对日志文件进行按天进行分割。
891 1
Tomcat日志实现每天切割(通过Cronolog实现日志分割)
|
存储 消息中间件 设计模式
请问你知道分布式系统设计模式的分割日志思想么?
请问你知道分布式系统设计模式的分割日志思想么?
请问你知道分布式系统设计模式的分割日志思想么?
|
存储 消息中间件 设计模式
分布式系统设计模式 - 分割日志(Segmented Log)
分布式系统设计模式 - 分割日志(Segmented Log)
分布式系统设计模式 - 分割日志(Segmented Log)
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
271 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
6天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。