Tengine 异步日志打印及轮转

说明

  • Tengien 优化了 nginx 的日志模块,支持异步打印日志和自动轮转
  • 日志 pipe 功能使用独立进程打印日志,不会阻塞 worker 进程,worker 进程与独立日志进程间通过 pipe 进行通讯
  • rollback 功能依赖日志 pipe 功能,提供基于 tengine 自身的日志回滚功能,支持,按照时间间隔、文件大小进行回滚,并支持配置,backup 文件的个数。日志回滚模块会按照配置的条件将 log 文件 rename 成 backup 文件,然后重新写新日志文件

配置项

1
2
3
Syntax: pipe:rollback [logpath] interval=[interval] baknum=[baknum] maxsize=[maxsize] adjust=[adjust]
Default: none
Context: http, server, location
  • logpath: 日志输出路径
  • interval:日志回滚间隔,默认0(永不回滚)
  • baknum:backup文件保留个数,默认1(保留1个)
  • maxsize:log文件最大size,默认0(永不回滚)
  • adjust: 按时间回滚时,回滚时间随机延后,用于规避集群同时触发回滚动作,默认60 (60s)

示例

  • 原始配置
1
2
3
4
server{
    access_log      logs/XXXX_access.log json_log;
    error_log       logs/XXXX_error.log;
}
  • 配置轮转后配置
1
2
3
4
server{
    access_log      "pipe:rollback logs/XXXX_access.log interval=1d baknum=30 maxsize=1G"  json_log;
    error_log       "pipe:rollback logs/XXXX_error.log interval=1d baknum=30 maxsize=1G";
}
  • reload 配置
1
sudo systemctl reload tengine
  • 查看进程
1
2
3
4
$ ps aux |grep nginx
root      888648  0.0  0.0  32864  6636 ?        S    10:27   0:00 nginx: rollback logs/test_dingzhi_access.log interval=1d baknum=30 maxsize=1G
tengine   888667  0.0  0.0  66896 35600 ?        S    10:27   0:00 nginx: worker process
root     1679301  0.0  0.0  32864  9860 ?        Ss    2022   0:00 nginx: master process /opt/tengine/sbin/nginx

参考