2007年2月28日星期三

debian的日志循环

我发现一台debian里的某个日志文件总被截断并重新创建,而且每次创建的文件的访问权限不是我所希望的,于是我检查了logrotate的配置,测试ok后到第二天发现,权限设置又不是我所预期的,气得我牙痒痒。重新检查发现:
debian sid下sysklogd自带了管理系统日志文件的循环备份的功能,具体配置文件在/etc/cron.daily/sysklogd。(实际上是使用了debianutils包里的savelog命令)
但大家更加熟悉的是logrotate所提供的日志循环功能。按照UNIX的简单哲学,我更倾向于用logrotate来管理所有的日志文件的循环备份。
用logrotate要注意的是,如果程序在不断的写日志文件,应该用copytruncate参数来保证原始日志文件不动。这时create参数会被忽略。
同时,要避免savelog干预我的日志文件,可修改/etc/cron.daily/sysklogd和/etc/cron.weekly/sysklogd,在用到syslogd-listfiles命令时加 -s 参数来过滤掉特定的日志,比如我的:
for LOG in `syslogd-listfiles -s ha` # Do not handle HA logs. --lanyufeng