access_log 似乎永久地为 0 大小。但是 error_log 写入得很好。
令人惊讶的是,创建了 access_log.[1-5].gz,但只有 access_log.3.gz 和 access_log.4.gz 包含非空日志。
好的,这里是也在日志文件目录中的 logrotate.conf:
# create new (empty) log files after rotating old ones
create
# compress old logs with gzip
compress
/home/default/example.com/user/logfiles/access_log {
missingok
rotate 5
daily
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
/home/default/example.com/user/logfiles/error_log {
missingok
rotate 5
size=5M
postrotate
/bin/kill -USR1 `cat /var/run/httpd.pid`
endscript
}
/home/default/example.com/user/logfiles/agent_log {
missingok
rotate 5
size=5M
postrotate
/bin/kill -USR1 `cat /var/run/httpd.pid`
endscript
}
/home/default/example.com/user/logfiles/referer_log {
missingok
rotate 5
size=5M
postrotate
/bin/kill -USR1 `cat /var/run/httpd.pid`
endscript
}
但是没有 agent_log、referer_log 文件。那么这个 logrotate.conf 明显有问题吗?如果没有,我怎么知道这个文件是否正在使用或者是否存在问题?如果需要,我可以发布更多信息。
顺便说一下,服务器是 Ubuntu 8.10。
更新:htttd.pid 甚至不存在。
ubuntu:~# cat /var/run/httpd.pid
cat: /var/run/httpd.pid: No such file or directory
答案1
您的 postrotate 设置为重新启动 syslogd。我相信您需要对 httpd 执行此操作。
答案2
您检查过 Apache 设置吗?Logrotate 只会轮换日志文件,而不会写入内容。因此,如果您的日志文件缺少内容,那么您应该先查看 Apache 设置。