美文网首页
根据status值分割nginx日志

根据status值分割nginx日志

作者: 码农工号9527 | 来源:发表于2021-12-21 15:29 被阅读0次

从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 $status_1 {
    ~^1  1;
    default 0;
}
map $status $status_2 {
    ~^2  1;
    default 0;
}
map $status $status_3 {
    ~^3  1;
    default 0;
}
map $status $status_4 {
    ~^4  1;
    default 0;
}
map $status $status_5 {
    ~^5  1;
    default 0;
}

这个配置的意思 $status 是1开头的时候,就将 $status_1 的值 置为 1,否则默认值为 0,其他依次类推

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

server {

    ......

    access_log  /data/wwwlogs/access_log_status1.log  combined if=$status_1;
    access_log  /data/wwwlogs/access_log_status2.log  combined if=$status_2;
    access_log  /data/wwwlogs/access_log_status3.log  combined if=$status_3;
    access_log  /data/wwwlogs/access_log_status4.log  combined if=$status_4;
    access_log  /data/wwwlogs/access_log_status5.log  combined if=$status_5;
 }

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

有关access_log参数的官方说明,语法如下:

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
 
access_log path format gzip[=level] [buffer=size] [flush=time] [if=condition];
 
access_log syslog:server=address[,parameter=value] [format [if=condition]];

buffer=size 为存放日志的缓冲区大小,flush=time 为将缓冲区的日志刷到磁盘的时间,gzip[=level] 表示压缩级别,[if=condition] 表示其他条件,一般场景这些参数都无需配置,极端优化时才可能考虑这些参数。

access_log off中的off,表示不记录访问日志。
如果不指定日志格式就会采用默认的combined格式记录日志。
默认配置:access_log logs/access.log combined;
放置位置在:http, server, location, if in location, limit_except中。

更多操作,可以参考此地址:https://help.aliyun.com/document_detail/41274.html

相关文章

  • 根据status值分割nginx日志

    从nginx 1.7版本开始,access_log日志文件中支持if语句判断。根据这个功能,我们可以根据statu...

  • NGINX日志切割

    NGINX日志切割 @(nginx笔记)[nginx] 非常简单的分割NGINX的日志文件,方便查阅。流程1.将当...

  • logrotate命令

    说明 logrotate命令是一个日志分割命令 用法 这里以 nginx日志为例 开启日志功能 配置日志分割规则 ...

  • nginx日志分析

    1,日志定义 在nginx.conf中定义的日志格式如下: 日志文件如下: 2,日志分割 nginx没有命令直接将...

  • 日志分割

    nginx日志放在 /var/log/nginx 下配置/etc/logrotate.d/nginx 测试分割/u...

  • Nginx运行日志自动切割

    所谓自动分割Nginx日志文件,就是指Rotate Nginx log files,即让Nginx每天(或每个星期...

  • Nginx(二)Nginx使用

    日志配置和切割编写自动分割Nginx日志脚本: nginxLogRotate.sh#!/bin/bashLOGS_...

  • Linux下Zabbix监控之Nginx监控添加

    nginx_status配置 conf配置开启nginx status监控 重启nginx 测试status 数据...

  • Nginx日志分割

    对于访问量大的站点,每天会产生大量的日志文件,为了方便我们排错和查看相关日志,对日志进行分割显得相当必要,下面是N...

  • 分割Nginx日志

    Nginx 是一个非常轻量的 Web 服务器,体积小、性能高、速度快等诸多优点。但不足的是也存在缺点,比如其产生的...

网友评论

      本文标题:根据status值分割nginx日志

      本文链接:https://www.haomeiwen.com/subject/vuexqrtx.html