在Linux中轮换Apache日志文件

举报
Tiamo_T 发表于 2022/05/05 23:44:28 2022/05/05
【摘要】 我想自动轮换apache access_log和error_log文件。能用一个例子来解释如何做到这一点吗?

我想自动轮换apache access_logerror_log文件能用一个例子来解释如何做到这一点吗?

这可以使用 logrotate 实用程序来实现,如下所述。

将以下文件添加到 /etc/logrotate.d 目录。

# vi /etc/logrotate.d/apache
/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
    size 100M
    compress
    dateext
    maxage 30
    postrotate
      /usr/bin/killall -HUP httpd
      ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" hgstcomcn@163.com
    endscript
}

注意:请参阅我们的logrotate 教程(包含 15 个示例),其中解释了有关如何使用 logrotate 选项的更多详细信息。

在上面的 /etc/logrotate.d/apache 示例中:

  • size 100M – 一旦 access_log 和 error_log 达到 100M,它将被轮换。您还可以使用 100k(用于 Kb)、100G(用于 GB)。除了大小,您还可以使用频率(每天、每周、每月)轮换 apache 日志。
  • compress – 表示将压缩旋转的日志文件。默认情况下,它使用 gzip。因此,旋转后的文件将具有 .gz 扩展名。
  • dateext – 将 YYYYMMDD 格式的日期附加到旋转的日志文件中。即创建access_log-20110616.gz,而不是access_log.1.gz
  • maxage - 指示应保留轮换日志文件的时间。在此示例中,它将保留 30 天。
  • postrotate 和 endscript – 包含在这两个参数之间的任何命令都将在日志旋转后执行。

重要提示:一旦轮换日志文件,您希望 apache 将新的日志消息写入新创建的 access_log 和 error_log。因此,您需要将 HUP 信号发送到 apache,如下所示。确保执行 /usr/bin/killall -HUP httpd,这将在轮换日志文件后重新启动 apache(阅读有关kill的更多信息)。

此外,您可能希望向自己发送一封电子邮件,表明日志文件已轮换,并将 ls -ltr 命令的输出作为电子邮件的正文。即在“postrotate”和“endscript”选项之间添加以下内容(在killall命令之后)。

ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache 重新启动并旋转日志文件" ramesh@thegeekstuff.com

/etc/cron.daily/logrotate 脚本每天运行,将对 /etc/logrotate.conf 中指定的所有文件和 /etc/logrotate.d 目录下的所有文件执行日志轮换。


添加上述 /etc/logrotate.d/apache 文件后,为了测试目的,您可以手动调用 logrotate 脚本,如下所示。

# /etc/cron.daily/logrotate

轮换日志文件后,请执行 ls 来验证它们。正如我们上面解释的,轮换的日志文件将保留 30 天。

# ls /usr/local/apache2/logs 
access_log 
error_log 
access_log-20110716.gz 
error_log-20110716.gz
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。