nginx的日志切割处理
在把apache迁移成nginx之后,就要着手解决web日志的问题了。
由于我们分域名网站众多,以前通过cronolog将apache的log自动按照yyyy-mm-dd截断成每天的各分网站日志,然后通过bash脚本使用awstat生成所有分网站的log分析页面,以便所有网站日志的统一管理和浏览。但是nginx的配置文件中不支持cronolog的管道,只好通过手动的方式来截取生成每天的各网站日志。
在nginx.conf中定义log:
在http{}内定义log格式:
log_formatcombined‘$remote_addr–$remote_user[$time_local]‘
‘”$request”$status$apache_bytes_sent‘
‘”$http_referer”“$http_user_agent”‘;
log_format表示log格式,combined表示定义的格式名称,后面表示格式样式。
在server{}内定义日志文件的位置和相应的格式:
access_log/data/weblogs/www1_access.logcombined;
nginx可接受的信号如下:SignalAction
TERM,INTTerminatetheserverimmediately
QUITStoptheserver
HUPConfigurationchanges,startnewworkers,gracefulstopofoldworkers
USR1Reopenlogfiles
USR2Upgradetheserverexecutable
WINCHGracefulStop(parentprocessadvisethechildrentoexit)
kill-HUPpid重新应用配置文件
kill-USR1pid重新刷新log
通过如下方式达到日志轮询的目的:
#vilogcron.sh
log_dir=”/data/weblogs”
date_dir=`date+%Y/%m/%d/%H`
/bin/mkdir-p${log_dir}/${date_dir}>/dev/null2>&1
/bin/mv${log_dir}/access.log${log_dir}/${date_dir}/access.log
kill-USR1`cat/opt/nginx/logs/nginx.pid`
定义一个cron,在每天晚上23:59:50执行这个脚本,后面的事情就交给awstats了。