我有一个繁忙网站的日志,增长速度非常快。我想知道是否有办法每天“拆分”日志文件,而无需使用外部工具。
编辑:我的错,我在 Windows 服务器 2003 上,Apache 版本 2.0.64。
答案1
Apache httpd 能够通过管道将错误和访问日志文件写入另一个进程,而不是直接写入文件。此功能大大提高了日志记录的灵活性,而无需向主服务器添加代码。为了将日志写入管道,只需将文件名替换为管道字符“|”,后跟应在其标准输入上接受日志条目的可执行文件的名称。
您可以使用此技术将日志传送到脚本,然后脚本会以您喜欢的任何方式拆分日志。这通常用于按虚拟主机拆分。
答案2
您可以使用 logrotate 来保持日志文件较小,也可以压缩它们。
例如,您可以使用类似以下内容:
/var/log/apache/*.log {
daily
rotate 5
size 100M
compress
postrotate
/usr/bin/killall -HUP apache
endscript
}
这将保留五个轮换文件。日志将每日轮换并压缩。有关更多信息,请参阅man logrotate
。