美文网首页nginx开发技巧
Nginx如何对日志文件进行配置?

Nginx如何对日志文件进行配置?

作者: 果然朝辉 | 来源:发表于2019-02-28 23:12 被阅读7次

    在我们日常工作开发中,对调试bug最重要的手段就是查看日志和断点调试了。
    今天我们来说日志文件,Nginx的日志文件一般保存的是访问日志和错误日志。

    1. 用来log_format指令设置日志格式

      log_format指令语法:log_format name format [format ...]
      Nginx默认的combined格式如下:
      log_format combined '$remote_addr - $remote_user [$time_local] '
                                          '"$request" $status $body_bytes_sent '
                                          '"$http_referer" "$http_user_agent"';
      其中$remote_addr        和$http_x_forward_for用于记录IP地址
            $remote_user        用于记录远程客户端用户名称
            $time_local         用于记录访问时间和时区
            $request            用于记录请求URL与HTTP协议
            $status             用于记录请求状态
            $body_bytes_sent    用于记录发送给客户端的文件主体内容大小
            $http_referer       用于记录是从哪个页面链接访问过来的
            $http_user_agent    用于记录客户端浏览器的相关内容
    

    2. 用access_log指令指定访问日志文件存放路径

        access_log指令语法:access_log path [format [buffer=size | off]]
        format即第一点中log_format的name,如何设置了format,那么日志文件就会按设置的日志格式生成日志文件.
        butter=size表示内存缓冲区的大小,例如可以设置buffer=32k
    

    3. 用error_log指令指定错误日志文件存放路径

        error_log    <FILE>    <LEVEL>;
        <FILE>:可以指定任意存放日志的目录
        <LEVEL>:错误日志级别,常见的错误日志级别有[debug | info | notice | warn | error | crit | alert | emerg],级别越高记录的信息越少。
        生产场景一般是 warn | error | crit 这三个级别之一
    

    4. Nginx日志文件的切割

        日积月累下,日志文件会越来越大,日志文件太大严重影响服务器效率,须要定时对日志文件进行切割。
        切割的方式有按月切割、按天切割、按小时切割,一般都是按天切割。
        那么如何进行切割呢?
        步骤如下:
        1. 创建日志文件存放路径
        2. 将日志文件以当天时间为名字进行重命名
        3. 发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件
        
        步骤知道了,那具体的代码呢?
        把如下代码保存为一个sh文件,然后利用crontab让这个sh文件每天在00:00定时执行这个脚本
        注意最后一步要换成自己环境下nginx.pid的绝对路径
        
        #!/bin/bash
        logs_path="/data1/logs/"
        mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
        mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
        kill -USR1 `cat /var/nginx/nginx.pid`
        
    

    相关文章

      网友评论

        本文标题:Nginx如何对日志文件进行配置?

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