如何限制 Apache 访问日志的大小,并限制它保留的归档日志的数量?
Posted
技术标签:
【中文标题】如何限制 Apache 访问日志的大小,并限制它保留的归档日志的数量?【英文标题】:How can I limit the size of Apache's access_log, and limit the number of archived logs it keeps? 【发布时间】:2012-07-11 09:44:51 【问题描述】:Apache 的 access_log 文件每隔几天就会转出大约 1GB 的存档副本。控制这个的设置在哪里?我希望能够控制它保留的最大大小和存档日志的数量。这是 apache 配置的一部分,还是我需要编写 cron 作业(等)来处理这个?我正在运行预分叉的 httpd。
【问题讨论】:
您的服务器使用什么操作系统? 【参考方案1】:惯用的方法是从 cronjob 运行 logrotate
,它可以切片、切块、压缩、重命名、保留最后一个 n 以及大多数其他人可能想要的东西。 (我认为现在大多数发行版都默认安装它。)
【讨论】:
是什么导致它现在转出为存档副本?我没有设置任何 cron 作业。我偶尔会重新启动 httpd。这样做可以吗?【参考方案2】:在大多数 Linux 发行版上,系统设置为每天运行 logrotate。您不会在 root 或任何特定用户的 crontab 中看到它。
很容易改变它处理日志文件的方式。在我的 Ubuntu 服务器上,/etc/logrotate.conf
文件具有如下设置:
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
[等]
而且,您可以查看目录/etc/logrotate.d/
以查看特定目录和应用程序的设置。
【讨论】:
我应该寻找什么文件来编辑服务器上的虚拟域的日志设置?这是logrotate.d/apache2
吗?
将在 /etc/apache2/sites-enabled 中【参考方案3】:
我会使用 rotatelogs,一个位于 apache bin 目录中的工具。
有关更多信息和示例,请参阅http://httpd.apache.org/docs/current/programs/rotatelogs.html。它具有存在于我的 HP-UX 系统上的优势。
或者如前所述,您可以使用大多数发行版附带的 logrotate 工具。
【讨论】:
【参考方案4】:我需要控制每个虚拟主机的日志文件大小并最终得到它:
ErrorLog "|/usr/bin/rotatelogs /var/www/my-virtual-host.com/logs/error_log_%Y.%m.%d.log 10M"
使用which rotatelogs
查找可执行文件的路径。我的情况是 /usr/bin/rotatelogs
而不是 |bin/rotatelogs
,因为它在文档中有所描述。
http://httpd.apache.org/docs/2.0/programs/rotatelogs.html
显然rotatelogs 也可以应用于access_log(即CustomLog)。
【讨论】:
【参考方案5】:other_vhosts_access.log 日志增长太快,我注释掉了 /etc/apache2/conf-available/other-vhosts-access-log.conf 中的 CustomLog 行,它对我有用。
【讨论】:
以上是关于如何限制 Apache 访问日志的大小,并限制它保留的归档日志的数量?的主要内容,如果未能解决你的问题,请参考以下文章
限制对 Apache 2.4 虚拟主机 (WAMP) 的访问
如何在ansible中指定docker的log-opt来限制容器的日志大小?