yanghongjun 发表于 2018-11-14 09:10:42

Nginx 之日志管理

  1.与nginx日志管理的相关指令有log_format用来设置日志的格式,access_log用来指定日志的存放路径,格式和缓存大小,这两条指令在nginx配置文件中的位置可以在http {} 之间,也可以在虚拟主机server {} 之间。
log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '  
'$status $body_bytes_sent "$http_referer" '
  
'"$http_user_agent" "$http_x_forwarded_for"';
  
access_loglogs/access.logmain;
  log_format   nameformat   :name表示定义格式的名称,可以随意命名,下文直接调用,format 定义格式的样式。
  $time_local :记录访问的时间与时区
  $http_x_forwarded_for :用户X-Forwarded-For IP地址
  $remote_addr :远程客户端的用户名称
  $request :记录请求的url与http协议
  $status :记录请求的状态
  $http_user_agent :客户端浏览器的相关信息
  $http_referer :记录从哪个页面链接访问过来的
  $remote_addr :记录客户端ip地址
  $body_bytes_sent :记录发送给客户单文件主题内容大小
  access_log :指定日志文件的存放路径
  access_log   path    ]
  path :日志文件的存放路径,
  format :表示使用log_format指定定义的日志格式名称
  buffer=size:设置内存缓冲区的大小
  (1):若不想记录日志,可以使用以下指令关闭日志记录
  access_log   off
  (2)若使用默认的combined格式日志记录
  access_log   /var/logs/filename.log
  或者
  access_log/var/logs/filename.log   combined
  (3) :使用自定义的日志格式
log_formatzhu'$remote_addr\t'  
'$time_local\t'
  
'$request\t'
  
'$status\t'
  
'$http_referer\t'
  
'$http_user_agent\t'
  
'$http_x_forwarded_for\t';
  
access_log/opt/nginx/logs/access.logzhu buffer=32k;
  2.日志文件切割
  由于nginx日志文件增长速度很快,nginx不像apache一样使用cronolog来轮转日志,可以用脚本来定时按月,日,小时切割,常用的是按天来切割
#!/bin/bash  
logs_path="/opt/nginx/logs/"
  
pid_path="/opt/nginx/logs/nginx.pid"
  
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 ${pid_path}`
  配置crontab每天00:00切割
# crontab -e  
00 00 * * * /bin/bash/root/nginx_log.sh


页: [1]
查看完整版本: Nginx 之日志管理