Nginx根据Status返回值分开保存日志的方法

发表时间:2017-12-12 13:50 | 分类:Linux | 浏览:2,678 次

从nginx 1.7版本开始,access_log日志文件中支持if语句判断。根据这个功能,我们可以根据status值分割nginx日志,正常200的访问记录放一个文件,404或者500等再放另外一个文件。对于后续分析nginx日志可能有用。

语法:

access_log path [format [buffer=size [flush=time]] [if=condition]];

The if parameter (1.7.0) enables conditional logging.
A request will not be logged if the condition evaluates to “0” or an empty string

值是0时,access_log就不会记录日志。具体配置方法如下。

在nginx.conf代码块中添加如下内容:

    map $status $normal {
        ~^2  1;
        default 0;
    }
    map $status $abnormal {
        ~^2  0;
        default 1;
    }
    map $remote_addr $islocal {
        ~^127  1;
        default 0;
    }

这个配置的意思大概是status值2开头的都正常,其他都是不正常访问。如果remote_addr是127,那么说明是本地内部调用。

定义好判断值后,在具体server代码块中添加类似如下:

    server {

        access_log logs/access.log combined if=$normal;
        access_log logs/access_abnormal.log combined if=$abnormal;
        access_log logs/access_local.log combined if=$islocal;

    }

添加后reload重新载入nginx,可以看到nginx日志已经根据Status返回值正常分割。

如果nginx版本不对,请先升级nginx,具体升级方法可以参考这篇文章。

https://zhangnq.com/2778.html

本文标签:

本文链接:https://www.sijitao.net/2627.html

欢迎您在本博客中留下评论,如需转载原创文章请注明出处,谢谢!

一键脚本 博客历程 留言联系 文章归档 网站地图 谷歌地图
Copyright © 2010-2024 章郎虫博客 All Rights Reserved.