解决FreeBSD日志轮转问题

2009-10-10T22:01:00

FreeBSD根本不必借助任何第三方工具,就可以完美的解决任何日志轮转的问题

/etc/newsyslog.conf文件格式如下一共有10列。其中3列是可选的,这些列如下

    logfile_name owner:group mode count size when flags path_to_pid_file signal_number

每个参数说明如下:


    logfile_name:必选参数,需要处理的日志的绝对路径。如,/var/log/http-access.log。
    owner:group:可选参数,表明该日志文件的所属属性。默认是root:wheel,如果不同自行更改。
    mode:必选参数,表示该文件的权限。如600。
    count:必选参数,表示日志保存的数量。如,7,则表示该类日志文件保存7个,分别为http.log、http.log.0...http.log.6
    size:和when参数二选一,如果不配置,则用*,表示日志的最大尺寸,超过这个尺寸,就会被轮转。单位是KB。
    when:和size参数二选一,如果不配置,则用*,表示日志轮转的周期。有两种格式可以指定。

格式一:@[[[[[cc]yy]mm]dd][T[hh[mm[ss]]]]] 举例来说吧
假定现在的日期是1999-01-22 00:00:00 则下面的日期格式都是相同的效果


       `19990122T000000'
       `990122T000000'
       `0122T000000'
       `22T000000'
       `T000000'
       `T0000'
       `T00'
       `22T'
       `T'
       `'

格式二:以天,周,和月为基础的日期格式。分别是[$Dhh]、[$Ww[Dhh]]、[Mdd[Dhh]]
其中,D表示天,hh表示小时数,范围为:0-23
W表示周,w表示周几,范围为:0-6 ,D和hh同上
M表示月,dd表示天日,范围为:1-31,D和hh同上
举例来说吧

      $D0 表示每天晚上0点轮转日志(和 @T00相同)
      $D23 表示每天23点轮转日志 (和 @T23相同)
      $W0D23 表示每周日的23点轮转日志
      $W5D16 表示每周五16点轮转日志
      $M1D0 表示每月的1号0点轮转日志 (和 @01T00相同)
      $M5D6 表示每月5号6点轮转日志 (和 @05T06相同)

flags:可选参数,表示轮转时的一些动作,如启用压缩等。其中常见标记如下

      B,表明该log文件为二进制文件,而非普通的ascii文件。如pf的日志就是二进制文件
      C,表明如果该日志文件不存在,则由newsyslog创建一个文件
      J,表明使用bzip2对轮转的日志文件进行压缩
      Z,表明使用gzip对轮转日志文件进行压缩

其余参数不常用,就不再一一例举出来了,如有兴趣详见man 5 newsyslog.conf path_to_pid_file:可选参数,产生此日志的进程的pid文件。如:/var/run/httpd.pid signal_number:可选参数,表明要发送给path_to_pid_file进程的信号。默认为发送HUP信号。

现在看一个具体的内容吧

    /data/weblog/httpd-access.log  600  20  *  @T00 JC/var/run/pflogd.pid

表示对http的访问日志进行轮转,日志总数为20,每天零点开始轮换,使用bzip进行压缩。

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »