解决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 进行压缩。


「倘若有所帮助,不妨酌情赞赏!」

Holmesian

感谢您的支持!

使用微信扫描二维码赞赏


相关文章

发表新评论