26

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

4

5 回答 5

25

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

于 2012-07-11T18:43:27.490 回答
3

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

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

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

于 2013-07-16T12:46:42.557 回答
1

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

于 2021-01-06T22:23:55.717 回答
0

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

于 2012-07-11T17:48:12.920 回答
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)。

于 2020-10-21T10:02:09.717 回答