解决FreeBSD日志轮转问题
提示:本文更新于 5596 天前,技术内容可能已发生变化,仅供参考。
其实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;M
表示月,dd
表示日期,范围是 1 - 31。
举例如下:
$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,每天零点开始轮换,并且使用 bzip2 进行压缩。
「倘若有所帮助,不妨酌情赞赏!」
感谢您的支持!
使用微信扫描二维码赞赏