我有一个Apache服务器,它有一个访问日志文件,大小已经超过了600MB。这使得搜索或解析该文件非常困难。
有哪些适用于Apache的软件或模块可以每天复制一份访问文件,以使其更易管理?
我有一个Apache服务器,它有一个访问日志文件,大小已经超过了600MB。这使得搜索或解析该文件非常困难。
有哪些适用于Apache的软件或模块可以每天复制一份访问文件,以使其更易管理?
你看过logrotate吗?这可能是最简单、最广泛可用和最易于理解的方法。它高度可配置,可能可以满足你90%的需求。
logrotate
的缺点是,在进程重新启动之前,日志文件将继续写入旧的文件名。 - MarkHu我非常喜欢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命令非常难在网上找到,具体命令如下:
The actual command for Windows, which is quite difficult to find online is:
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" common
这个配置会在日志文件大小达到5兆字节时将其轮转。
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
rotatelogs.exe -n 3 filepath 1M
),而不是使用日期日志名称。 - Tobiarotatelogs -t ... 100M
,我发现每次日志文件都会被覆盖,而不是追加。有没有办法让 rotatelogs
追加到已存在的日志文件中? - not2savvy在Windows操作系统中,可以使用rotatelog.exe或cronolog.exe。它们通常用于http.conf文件中的管道命令。 Mod_log_rotate是Apache的附加模块,仅用于访问日志轮换。 而Logrotate则仅适用于Unix操作系统。
我有一个模块可以为您完成此操作,无需外部管道等。
http://www.poptart.org/bin/view/Poptart/ModAutorotate
我曾试图将其添加到Apache模块集合中,但似乎已经破损了一段时间。