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