FreeBSD 研习课程讲义
Prev newsyslog Next

系统里面有一些纪录档 (logfiles),纪录档会随系统的使用时间而成长,内定
的纪录档,例如 /var/log/messages 涨到一个程度就会被系统处理压缩起来,
而处理这些纪录档的程序纪录在 /etc/newsyslog.conf 之中。
newsyslog.conf 是一个纪录 cron 计划运行的 newsyslog 程序的配置文件。
newsyslog指出了什麽时候日志文件需要打包或者重新整理。比如 logfile 被
移动到 logfile.0,logfile.0 被移动到 logfile.1 等等。另外,日志文件
可以用 gzip 来压缩,它们是这样的命名格式:logfile.0.gz,logfile.1.gz          
等等。
         logfilename:纪录档的位置
         owner:group:此档案的拥有者和群组
         mode:纪录档的权限
         count:表示会保留几次的纪录,超过就把比它还旧的纪录砍了
         size:纪录档的大小
         when:何时处理这个档案
         flags:记载此 log 档应该要以何种程序来处理,Z表示用 gzip 去压缩,
                B 表示二位元档或特殊的格式,N 表示并无采取任何程序处理。
         [/pid_file]:这个栏位一般不填,系统预设对每个纪录档做处理时就
                      会送出 SIGHUP 讯息给 syslogd 让他去执行纪录档的处理;
                      但假如自己在 newsyslog 中加入非预设要对某些纪录档作
                      处理的执行时,通常都会加上要 KILL-HUP 的 pid 档,才能
                      正常执行。
     
    以下是 FreeBSD 4.9 Release中系统预设的 cron,可以在 newsyslog.conf 看到:
         # logfilename       [owner:group] mode count size when flags  [/pid_file]
         [sig_num]
         /var/log/cron                     600    3   100     *     Z 
         /var/log/amd.log                  644    7   100     *     Z 
         /var/log/auth.log                 600    7   100     *     Z 
         /var/log/kerberos.log             600    7   100     *     Z 
         /var/log/lpd-errs                 644    7   100     *     Z 
         /var/log/maillog                  640    7    *    @T00    Z 
         /var/log/sendmail.st              640   10    *     168    B 
         /var/log/messages                 644    5   100     *     Z 
         /var/log/all.log                  600    7    *    @T00    Z 
         /var/log/slip.log root:network    640    3   100     *     Z 
         /var/log/ppp.log root:network     640    3   100     *     Z 
         /var/log/security                 600   10   100     *     Z 
         /var/log/wtmp                     644    3    *    @01T05  B
         /var/log/daily.log                640    7    *    @T00    ZN
         /var/log/weekly.log               640    5    1    $W6D0   ZN
         /var/log/monthly.log              640   12    *    $M1D0   ZN
         /var/log/console.log              600    5   100     *     Z 

      
     ※要是我们要新加入的一些非预设的,程式(例如www)所产生的纪录档怎麽办?
         /var/log/httpd-access.log         640    5    *    @T00     Z /var/run/httpd.pid 30
         /var/log/httpd-error.log          640    5    *    @T00     Z /var/run/httpd.pid 30
 
         第一栏是纪录档的位置, 第二栏是纪录档的权限 (mode),5 表示在硬碟
         内保留过去六次处理的纪录(log.0.gz~ log.5.gz), 比六次还旧的纪录
         就把他砍了。* 表示不管纪录档的大小。 @T00 表示每天零点零分的时候
         处理这个档案,Z 表示把处理过的档案压缩起来, 节省空间。
         
   
     ※为什麽后面要加上/var/run/httpd.pid 30?
         因为 newsyslog 在系统 default 的 contable (/etc/crontab) 里被预先
         设定为每一个小时启动一次,然而在 newsyslog.conf 里设定让 apache log
         自动 rotate,不过发现 newsyslog 后接下来的 apache log 都不会写入了,
         只留下一行 newsyslog[66253]: logfile turned over
         这个问题出在当 newsyslog rotate log之后,没有送个 SIGHUP 给 apache,
         导致 apache的log 写到不知道什麽地方去,所以要在 newsyslog.conf 里面
         有关 httpd-access.log 及 httpd-error.log 的部份后面加上要 KILL -HUP
         的 pid 档,才能正常运作。
详细的内容直接用 man 去看 newsyslog 可以更清楚
叁考网站:
         http://redhat.ecenter.idv.tw/bbs/showthread.php?threadid=32505
 
         
       

Prev Home Next
log 日志档概述 UP