nginx日志
Posted 土豆柿子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx日志相关的知识,希望对你有一定的参考价值。
一. nginx.conf中 http 加入以下配置
access_log on; log_format main ‘$remote_addr - [$time_local] ‘ ‘$upstream_addr $request_time $upstream_response_time ‘ ‘$http_host $request‘ ‘"$status" $body_bytes_sent "$http_user_agent"‘; access_log /data/nginx_log/access.log main;
$remote_addr, $http_x_forwarded_for 记录客户端IP地址
二.
nginx的日志文件没有rotate功能。编写每天生成一个日志,我们可以写一个nginx日志切割脚本来自动切割日志文件。
第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,Linux是靠文件描述符而不是文件名定位文件。
第二步向nginx主进程发送USR1信号。nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。工作进程立刻打开新的日志文件并关闭重名名的日志文件。然后你就可以处理旧的日志文件了。[或者重启nginx服务]。
nginx日志按每分钟自动切割脚本如下:
新建shell脚本:vi/usr/local/software/nginx/nginx_log.sh
#!/bin/bash #设置日志文件存放目录 LOG_HOME="/usr/local/software/nginx/logs/" #备分文件名称 LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".abc.access.log #重命名日志文件 mv ${LOG_HOME}/abc.access.log ${LOG_HOME}/${LOG_PATH_BAK}.log #向nginx主进程发信号重新打开日志 kill -USR1 `cat /usr/local/software/nginx/logs/nginx.pid`
每天凌晨执行以上脚本
以上是关于nginx日志的主要内容,如果未能解决你的问题,请参考以下文章
Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情