欢迎阅读!

潇湘夜雨

当前位置: 主页 > 服务器 >

nginx日志精确切割

时间:2020-04-16 21:52来源:潇湘夜雨 作者:华嵩阳 点击:
1、概述 nginx切割日志的方式有多种,例如定时任务脚本重命名日志、lograte工具自动切割日志等 这些方式在平常都可以满足日志切割的,但是在高并发的web访问的情况下,如果每天0:00开
1、概述

nginx切割日志的方式有多种,例如定时任务脚本重命名日志、lograte工具自动切割日志等
这些方式在平常都可以满足日志切割的,但是在高并发的web访问的情况下,如果每天0:00开始切割日志,会有部分前一天的日志打印到新的日志文件中,另外当web中日志文件
较多时,通过脚本或工具的方式切割的效率较低。

2、解决方案

方案一;配置文件自定义nginx变量,日志文件调整为按日期的变量。

    server {
        listen       80;
        server_name  localhost;
 
        charset utf-8;
    if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
        set $year $1;
        set $month $2;
        set $day $3;
        }
        access_log  log/front.access_$year$month$day.log main;

方案二: 用tengine代替nginx

方式一:tengine的变量属性,可以做到分钟级别以及秒级别切割日志
access_log   log/access_$year$month$day$hour$minute.log  main;

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

logpath: 日志输出路径

interval:日志回滚间隔,默认0(永不回滚)

baknum:backup文件保留个数,默认1(保留1个)

maxsize:log文件最大size,默认0(永不回滚)

adjust: 按时间回滚时,回滚时间随机延后,用于规避集群同时触发回滚动作,默认60 (60s)

http {
	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
	access_log  "pipe:rollback logs/access_log interval=1h baknum=5 maxsize=2G"  main;
}

(责任编辑:liangzh)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容