1.Nginx允许对于不同的server做不同的log记录
在nginx.conf配置文件中,在server配置段中,关于日志有如下配置:
access_log logs/host.access.log main;
这表示该server中的日志信息在logs目录下的host.access.log中,日志信息使用的格式是"main"格式.
2.日志格式
main格式的定义在全局段中配置:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
main格式是定义的一种日志格式,并起好了名字便于引用,其中
$remote_addr 是远程地址;
$remote_user [$time_local] 是客户端用户名称及访问时间;
$request 是请求的URL和HTTP协议;
$status 是请求状态码;
$body_bytes_sent 是发送给客户端的字节数,不包括响应头的大小;
$http_referer 是记录从哪个页面链接访问过来;
$http_user_agent 记录客户端浏览器相关信息;
$http_x_forwarded_for 记录客户端使用代理后真实的IP地址
3.定时任务完成日志切割
比如想要每天重新生成一个日志文件,按照日期进行分割,此处只需写个脚本.
#!/bin/bash
LOGPATH=/usr/local/nginx/logs/host.access.log
HISTORYPATH=/datalog/$(date -d now +%Y)/$(date -d now +%m)/$(date -d now +%d)
mkdir -p $HISTORYPATH
BACKNAME=$HISTORYPATH/host.`date -d now +%H%M`.access.log
mv $LOGPATH $BACKNAME
touch $LOGPATH
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
然后再设置一个定时任务即可;
crontab -e
* * */1 * * sh datalog.sh