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