nginx自动日志功能与日志自动切割脚本

来源:未知 责任编辑:责任编辑 发表时间:2014-04-20 03:41 点击:

关于nginx包含变量的自动日志: 
 
使用自动日志需要注意以下: 
1、nginx日志目录权限,以我的安装路径为例/usr/local/nginx,那我的日志目录就是在/usr/local/nginx/logs里;使用了包含变量 
 
自动日志,那么这个目录nginx的用户需要有写入的权限,否则将不可能生成日志。默认情况下,nginx的运行用户为nobady。 我的 
 
习惯是安装一个程序然后给他分配一个专用账户使用。 
 
2、缓存将不会被使用,因为使用了变量的原因吧(这一点我还没有完全理解) 
 
3、每条日志,要先打开文件,然后写入,最后关闭文件,如此循环。此时,需要开启nginx的open_log_file_cache功能,缓存经常 
 
被使用的日志文件描述符缓存。open_log_file_cache 默认为off 
open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m; 
 
max  最大的文件描述符数量,最大的缓存数量 
inactive 在多少时间内不活动,就会被删除 
min_uses 如果在inactive时间内,使用超过该参数定义的次数,就会被缓存 
valid 多少时间检查一次。 
 
http { 
     
    ………… 
    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/$server_name.access.log  main; 
    open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m; 
     
    …………   省去了其他行 

 
最后,日志文件名会以在server_name中定义的名字开始。例:svr3.labexam.com.access.log 
 
4、关于日志切割: 
完成以上三项后,并不是工作的结束,只是又一个开始。日志会随着访问量的增大急速增长,所以需要做日志的切割! 
 
以下是一个脚本: 
 
#!/bin/bash 
#made by cheng 
#blog:myhat.blog.51cto.com 
#!/bin/bash 
#made by cheng 
#blog:myhat.blog.51cto.com 
#last_time=2011/08/16 
 
#your logs store 
log_path=/data 
nginx_pid=/usr/local/nginx/logs/nginx.pid 
nginx_log=/usr/local/nginx/logs 
yesterday=`date -d "yesterday" +%Y%m%d` 
host=`ls -l $nginx_log/*.access.log | awk -F " " '{print $9}' | awk -F ".access" '{print $1}' | awk -F "$nginx_log/" '{print $2}'` 

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • /etc/fstab 详解
  • nginx主主集群
  •  LVS-NAT和LVS-DR模式的实现详解
  •  RHCE考试之磁盘配额
  • 学习笔记:ACL详解
  •  LVM逻辑卷管理器
  • suse linux双网卡双网关配置
  •  Nginx主主负载均衡架构
  • ubuntu学习Mysql

快速直达

操作系统导航

LinuxWindows虚拟机
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1