1.与nginx日志管理的相关指令有log_format用来设置日志的格式,access_log用来指定日志的存放路径,格式和缓存大小,这两条指令在nginx配置文件中的位置可以在http { } 之间,也可以在虚拟主机server { } 之间。
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;
log_format name format :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 [format [buffer=size |off ] ]
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_format zhu '$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.log zhu 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切割
[root@zhu1 ~]# crontab -e 00 00 * * * /bin/bash /root/nginx_log.sh