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

22次阅读

答案:通过脚本预处理实现按错误级别分离日志。利用 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 的轮转机制,就能实现按错误级别切割和管理日志。关键是分离逻辑要清晰,避免重复或遗漏日志条目。

站长
版权声明:本站原创文章,由 站长 2025-11-09发表,共计1738字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources