如何限制Apache的access_log的大小,并限制它保留的存档日志的数量?

时间:2012-07-11 17:40:00

标签: logging apache

Apache的access_log文件每隔几天转出一个大约1GB的存档副本。控制此设置的设置在哪里?我希望能够控制它保留的最大大小和存档日志的数量。这是apache配置的一部分,还是我需要编写cron jobs(等)来处理这个问题?我正在运行pre-forked httpd。

5 个答案:

答案 0 :(得分:18)

在大多数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/以查看特定目录和应用程序的设置。

答案 1 :(得分:3)

我会使用rotatelogs,这是一个位于apache bin目录中的工具。

有关更多信息和示例,请参阅http://httpd.apache.org/docs/current/programs/rotatelogs.html。它具有在我的HP-UX系统上存在的优势。

或者如前所述,您可以使用大多数发行版附带的logrotate工具。

答案 2 :(得分:1)

other_vhosts_access.log 日志增长得太快,我注释掉了 /etc/apache2/conf-available/other-vhosts-access-log.conf 中的 CustomLog 行,它对我有用。

答案 3 :(得分:0)

习惯的方法是从cronjob运行logrotate,它可以切片,切块,压缩,重命名,保留最后的n和大多数其他可能需要的东西。 (我认为现在大多数发行版默认安装它。)

答案 4 :(得分:0)

我需要控制每个虚拟主机的日志文件大小,并最终得到它:

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)。