Linux日志怎么切割_Linux日志使用logrotate按错误级别切割的配置实例

答案:通过脚本预处理实现按错误级别分离日志。利用grep提取Error和WARN级别日志到独立文件,logrotate按配置每日轮转并压缩,关键日志保留14天,结合postrotate执行分离脚本,确保日志高效管理与排查。

Linux日志怎么切割_Linux日志使用logrotate按错误级别切割的配置实例

linux系统中,日志文件会随着时间不断增长,影响系统性能和排查问题的效率。logrotate 是 Linux 下用于自动轮转、压缩和清理日志的标准工具。虽然 logrotate 本身不能直接按“错误级别”(如 ERROR、WARN)切割日志,但可以通过结合脚本过滤日志内容,实现按错误级别分离日志并进行轮转。

logrotate 基本原理

logrotate 通过配置文件定义日志的轮转策略,比如轮转周期、保留份数、是否压缩等。默认配置位于 /etc/logrotate.conf,而具体服务的配置通常放在 /etc/logrotate.d/ 目录下。

按错误级别切割日志的思路

由于 logrotate 不解析日志内容,无法直接按 ERROR、WARN 等级别分离。但可以借助外部脚本,在轮转前将原始日志按级别拆分出多个文件,再由 logrotate 分别处理这些文件。

示例场景:
假设应用日志位于 /var/log/app.log,格式包含日志级别,例如:
2025-04-05 10:00:00 ERROR User login failed
2025-04-05 10:01:00 WARN Disk usage high

我们希望分离出:/var/log/app.error.log/var/log/app.warn.log,并分别轮转。

配置实例:按错误级别切割并轮转

1. 编写日志分离脚本

创建脚本 /usr/local/bin/split_app_log.sh

 #!/bin/bash LOG_FILE="/var/log/app.log" ERROR_LOG="/var/log/app.error.log" WARN_LOG="/var/log/app.warn.log" <h1>提取 ERROR 级别日志追加到 error 文件</h1><p>grep " ERROR " "$LOG_FILE" >> "$ERROR_LOG"</p><h1>提取 WARN 级别日志追加到 warn 文件</h1><p>grep " WARN " "$LOG_FILE" >> "$WARN_LOG"</p><h1>清空原日志或备份后清空</h1><p>> "$LOG_FILE"</p>

赋予执行权限:

Linux日志怎么切割_Linux日志使用logrotate按错误级别切割的配置实例

ViiTor实时翻译

ai实时多语言翻译专家!强大的语音识别、AR翻译功能。

Linux日志怎么切割_Linux日志使用logrotate按错误级别切割的配置实例 116

查看详情 Linux日志怎么切割_Linux日志使用logrotate按错误级别切割的配置实例

chmod +x /usr/local/bin/split_app_log.sh

2. 配置 logrotate 规则

创建配置文件 /etc/logrotate.d/app

 /var/log/app.log {     daily     missingok     rotate 7     compress     delaycompress     notifempty     postrotate         /usr/local/bin/split_app_log.sh     endscript } <p>/var/log/app.error.log /var/log/app.warn.log { daily missingok rotate 14 compress delaycompress notifempty create 644 root root }</p>

说明:

  • daily:每天轮转一次
  • rotate 7:保留最近 7 个轮转文件
  • postrotate … endscript:在轮转后执行脚本,分离日志内容
  • app.error.log 和 app.warn.log 保留 14 天,因错误日志更关键
  • create:确保分离出的日志文件权限正确

测试与验证

使用以下命令测试配置语法:

logrotate -d /etc/logrotate.d/app

-d 表示调试模式,不会真正执行。

强制执行一次轮转:

logrotate -f /etc/logrotate.d/app

检查 /var/log/app.error.log/var/log/app.warn.log 是否生成对应内容。

基本上就这些。通过脚本预处理日志内容,再配合 logrotate 的轮转机制,就能实现按错误级别切割和管理日志。关键是分离逻辑要清晰,避免重复或遗漏日志条目。

上一篇
下一篇
text=ZqhQzanResources