解决FreeBSD日志轮转问题
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进行压缩。