直接在nginx配置文件中,配置日志循环,而不需使用logrotate或配置cron任务。需要使用到$time_iso8601 内嵌变量来获取时间。$time_iso8601格式如下:2015-08-07T18:12:02+02:00。然后使用正则表达式来获取所需时间的数据。
按天切割日志,前置条件 ,nginx编译安装时,./configigure --参数不包含without的模块,比如缺少gzib就yum 安装gzlib-devel 。最终编译如果能满足 ./configure --prefix=/***/nginx 。则以下配置肯定不会报错。不然会报unkown directive “if"的错误,让你怀疑人生
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log /data/logs/nginx/www.ttlsa.com-$year-$month-$day-access.log;
这个代码块要放在server{}内。error.log不建议如此使用
对了,日志目录要给与足够的权限。或者直接把nginx的运行用户改为root。