nginx 日志相关配置总结

设置位于nginx.conf:
        log_format  main  '$server_name $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $upstream_addr $request_time $upstream_response_time';
        access_log /logs/nginx/access.log main;
        error_log /logs/nginx/error.log;
设置能够放在http{}中也能够放在server{}中,后者会针对每一个server作不一样配置. 
其中最应该关注的除了status,还有request_time 和upstream_response_time有一些细微的差异
request_time官网描述:request processing time in seconds with a milliseconds resolution; time elapsed between the first bytes were read from the client and the log write after the last bytes were sent to the client 。
指的就是从接受用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出
而真正程序的响应时间应该用$upstream_response_time。
 
 

 
日志自动切分:利用logrotate,首先安装Logrotate,
而后在/etc/logrotate.d 中加入一个文件(注意若是是nginx经过apt-get安装的话该步骤是自动的,全部经过apt-get安装的程序日志都会自动生成logrotate 配置)
 
配置相似于
logs/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi; \
        endscript
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
        endscript
}
 
该配置会按照天来切分.固然最好还要用
/usr/bin/find /logs/nginx -mtime +3 -name "*.log.*" -exec /bin/rm -r {} \;
配置到crontab中按期执行来清理多余的切分文件,不然容易磁盘溢出. 
相关文章
相关标签/搜索