温馨提示×

如何切割ubuntu apache日志

小樊
54
2026-09-09 14:03:55
栏目: 智能运维

在 Ubuntu 上,Apache 日志切割常见做法有 3 种:logrotate(推荐)、cronolog、自定义脚本。下面按使用频率和推荐程度说明。


一、使用 logrotate(Ubuntu 默认已安装,最推荐)

Ubuntu 的 Apache 通常已经由 logrotate 管理。

1. 查看现有配置

cat /etc/logrotate.d/apache2

典型内容示例:

/var/log/apache2/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        systemctl reload apache2 > /dev/null 2>&1
    endscript
}

2. 常用参数说明

  • daily / weekly / monthly:切割周期
  • rotate N:保留 N 个旧日志
  • compress:压缩旧日志
  • size 100M:超过大小就切
  • postrotate:切完后重启 Apache 日志句柄

3. 手动测试

logrotate -d /etc/logrotate.d/apache2   # 模拟
logrotate -f /etc/logrotate.d/apache2  # 强制执行

二、使用 cronolog(按时间自动切割)

适合按天/小时生成新文件。

1. 安装

sudo apt install cronolog

2. 修改 Apache 配置

编辑:

/etc/apache2/sites-enabled/000-default.conf

示例:

CustomLog "|/usr/bin/cronolog /var/log/apache2/access_%Y%m%d.log" combined
ErrorLog  "|/usr/bin/cronolog /var/log/apache2/error_%Y%m%d.log"

3. 重启 Apache

sudo systemctl restart apache2

✅ 优点:日志文件名带日期
❌ 缺点:不会自动压缩


三、自定义脚本 + cron(灵活但麻烦)

示例(按天切割):

#!/bin/bash
DATE=$(date -d yesterday +%Y%m%d)
mv /var/log/apache2/access.log /var/log/apache2/access_$DATE.log
systemctl reload apache2

加入 cron:

0 0 * * * /usr/local/bin/cut_apache_log.sh

四、常见建议

  • ✅ 生产环境用 logrotate
  • ✅ 切完一定要 reload apache2
  • ✅ 日志别放 /var 小分区
  • ✅ 定期清理旧日志

如果你愿意,可以告诉我:

  • Apache 版本
  • 日志路径
  • 想按「大小」还是「时间」切

我可以帮你写可直接用的配置。

0 踩