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]