Nginx :Nginx日志管理

Nginx日志主要分为两种:access_log(访问日志)error_log(错误日志)。

默认配置,会输出在logs目录下,如右:

通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。

错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。

因此,将日志好好利用,可以得到很多有价值的信息

 

access_log解读

访问日志主要记录客户端的请求。客户端向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; # 关闭访问日志

  •  path :指定日志的存放位置,
  •  format: 指定日志的格式。在这里指的是main对应示例中的
  •  buffer :用来指定日志写入时的缓存大小。默认是64k。
  •  gzip: 日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。
  •  flush :设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空。
  •  if :条件判断。如果指定的条件计算为0或空字符串,那么该请求不会写入日志。
  •  另外,还有一个特殊的值off。如果指定了该值,当前作用域下的所有的请求日志都被关闭。

 作用域access_log指令的作用域分别有httpserverlocation。(实际应用为就近原则http、server都设置了也采用server

 

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"'

各参数明细表:

$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:可以记录用户是从哪个链接访问过来的

 

error_log解读

错误日志在Nginx中是通过error_log指令实现的。该指令记录服务器和请求处理过程中的错误信息。

错误日志不支持自定义

语法:

error_log path [level];

  • path参数指定日志的写入位置。
  •  level参数指定日志的级别(不写为全部)。level可以是debug, info, notice, warn, error, crit, alert,emerg中的任意值(等级从低到高排列)。

只有日志的错误级别等于或高于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`

配置cron:

*/1 * * * * /usr/local/nginx/sbin/logcut.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值