68

我有一个 Apache 服务器,它有一个超过 600MB 的访问日志文件。这使得搜索或解析文件变得非常困难。
有哪些适用于 Apache 的软件或模块可以制作我的访问文件的每日副本以使其更易于管理?

4

7 回答 7

49

你看过logrotate - 这可能是实现这一目标的最简单、最广泛可用且易于理解的方法。它是高度可配置的,可能会完成您需要的 90%。

于 2008-09-04T15:54:38.737 回答
27

我是Cronolog的忠实粉丝。只需通过它安装和管道您的日志。对于每日日志轮换,这样的事情会起作用:

ErrorLog  "|/usr/bin/cronolog /path/to/logs/%Y-%m-%d/error.log"
CustomLog "|/usr/bin/cronolog /path/to/logs/%Y-%m-%d/access.log" combined

非常方便,一旦安装,比 logrotate 更容易(根据我的经验)。

于 2008-09-04T16:12:41.020 回答
13

在网上很难找到的 Windows 的实际命令是:

CustomLog '|" "*Apache-Path/bin/rotatelogs.exe" 
    "**Apache-Path*/logs/backup/internet_access_%d-%m-%y.log" 86400' combined

其中“internet_access”位是您为文件选择的名称,86400 是一天中的秒数。您需要将 Apache-Path 更改为您安装 Apache 的相关目录。

于 2008-12-10T11:15:04.660 回答
9

对数旋转

logrotate可能是最好的解决方案。使用该文件/etc/logrotate.conf更改所有日志的设置。你改成weekly这样daily,日志每天都在轮换。此外,您可能需要添加compress压缩文件。如果您不关心旧日志,则可以将轮换设置rotate 4为较低的值。

于 2008-09-04T16:00:57.083 回答
3

CustomLog "|bin/rotatelogs /var/logs/logfile 5M" 常用

此配置将在日志文件大小达到 5 兆字节时轮换日志文件。

ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M" 

这将是重定向 Apache 日志的最佳方式。无需使用 httpd 编译 mod。

于 2011-06-21T00:20:53.023 回答
1

Windows 操作系统上的 rotatelog.exe 或 cronolog.exe。它们用于 http.conf Mod_log_rotate 附加模块中的管道命令,仅用于访问日志轮换 Logrotate ONLY for unix os。

于 2010-08-04T09:22:45.920 回答
0

我有一个模块可以为您执行此操作,而无需外部管道等:

http://www.poptart.org/bin/view/Poptart/ModAutorotate

我试图将它添加到 Apache 模块集合中,但现在似乎已经被破坏了一段时间。

于 2010-11-27T09:22:59.527 回答