Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。
通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。
错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。
因此,将日志好好利用,可以得到很多有价值的信息
访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。当然具体要记录哪些信息,你可以通过log_format指令定义。
示例:
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'
#access_log logs/access.log main;
语法:
#access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
#设置访问日志 对应上面的命令行#access_log off; # 关闭访问日志
作用域:access_log指令的作用域分别有http,server,location。(实际应用为就近原则,http、server都设置了也采用server)
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'
各参数明细表:
$remote_addr: 客户端的ip地址(代理服务器,显示代理服务ip)
$remote_user: 用于记录远程客户端的用户名称(一般为“-”)
$time_local: 用于记录访问时间和时区
$request: 用于记录请求的url以及请求方法
$status: 响应状态码,例如:200成功、404页面找不到等。
$body_bytes_sent: 给客户端发送的文件主体内容字节数
$http_user_agent:用户所使用的代理(一般为浏览器)
$http_x_forwarded_for: 可以记录客户端IP,通过代理服务器来记录客户端的ip地址
$http_referer:可以记录用户是从哪个链接访问过来的
错误日志在Nginx中是通过error_log指令实现的。该指令记录服务器和请求处理过程中的错误信息。
错误日志不支持自定义
语法:
error_log path [level];
只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error
示例:
#error_log logs/error.log;
#error_log logs/error_notice.log notice;
#error_log logs/error_info.log info; ##可以将不同的错误类型分开存
nginx的日志会持续堆积,我们也可以对nginx的日志进行切割,需要开启定时任务
/etc/init.d/rsyslog start #系统日志,如不开启,看不到定时任务日志
/etc/rc.d/init.d/crond start #定时任务开启
编写sh脚本:
编写sh:
#!/bin/bash
#设置日志文件存放目录
LOG_HOME="/usr/local/nginx/logs/"
#备分文件名称
LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)"
#重命名日志文件
mv ${LOG_HOME}/access.log ${LOG_HOME}/access.${LOG_PATH_BAK}.log
mv ${LOG_HOME}/error.log ${LOG_HOME}/error.${LOG_PATH_BAK}.log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${LOG_HOME}/nginx.pid`
*/1 * * * * /usr/local/nginx/sbin/logcut.sh