Apache 的 access_log 文件每隔几天就会转出大约 1GB 的存档副本。控制这个的设置在哪里?我希望能够控制它保留的最大大小和存档日志的数量。这是 apache 配置的一部分,还是我需要编写 cron 作业(等)来处理这个?我正在运行预分叉的 httpd。
5 回答
在大多数 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。]
而且,您可以查看目录/etc/logrotate.d/
以查看特定目录和应用程序的设置。
我会使用rotatelogs,一个位于apache bin 目录中的工具。
有关更多信息和示例,请参阅http://httpd.apache.org/docs/current/programs/rotatelogs.html。它具有存在于我的 HP-UX 系统上的优势。
或者如前所述,您可以使用大多数发行版附带的 logrotate 工具。
other_vhosts_access.log 日志增长太快,我注释掉了 /etc/apache2/conf-available/other-vhosts-access-log.conf 中的 CustomLog 行,它对我有用。
惯用的方法是logrotate
从 cronjob 运行,它可以切片、切块、压缩、重命名、保留最后一个 n 以及大多数其他人可能想要的东西。(我认为现在大多数发行版都默认安装它。)
我需要控制每个虚拟主机的日志文件大小并最终得到它:
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)。