我有一个 Apache 服务器,它有一个超过 600MB 的访问日志文件。这使得搜索或解析文件变得非常困难。
有哪些适用于 Apache 的软件或模块可以制作我的访问文件的每日副本以使其更易于管理?
7 回答
你看过logrotate - 这可能是实现这一目标的最简单、最广泛可用且易于理解的方法。它是高度可配置的,可能会完成您需要的 90%。
我是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 更容易(根据我的经验)。
在网上很难找到的 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 的相关目录。
对数旋转
logrotate
可能是最好的解决方案。使用该文件/etc/logrotate.conf
更改所有日志的设置。你改成weekly
这样daily
,日志每天都在轮换。此外,您可能需要添加compress
压缩文件。如果您不关心旧日志,则可以将轮换设置rotate 4
为较低的值。
CustomLog "|bin/rotatelogs /var/logs/logfile 5M" 常用
此配置将在日志文件大小达到 5 兆字节时轮换日志文件。
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
这将是重定向 Apache 日志的最佳方式。无需使用 httpd 编译 mod。
Windows 操作系统上的 rotatelog.exe 或 cronolog.exe。它们用于 http.conf Mod_log_rotate 附加模块中的管道命令,仅用于访问日志轮换 Logrotate ONLY for unix os。
我有一个模块可以为您执行此操作,而无需外部管道等:
http://www.poptart.org/bin/view/Poptart/ModAutorotate
我试图将它添加到 Apache 模块集合中,但现在似乎已经被破坏了一段时间。