概述
本文记录 Nginx 按时间命名日志文件的方式,已经踩过好几次坑,记录一下有备无患。
Nginx配置内容
server{
……
root /data/html/mall;
index index.html;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
}
access_log /data/logs/nginx/$year-$month-$day-$hour-j2.access.log main;
error_log /data/logs/nginx/$year-$month-$day-$hour-j2.error.log;
……
}
注意
- Nginx启动用户需要有日志目录中创建文件的权限;
- access_log 不能加缓存的配置,例如:flush、buffer配置;
- 每次写入日志都要开启和关闭日志文件,由于常用文件的描述符可以存储在缓存中,因此在open_log_file_cache指令的有效参数指定的时间内,可以继续写入旧文件;
- 每次写入之前日志之前,都会检查根目录(root指令指定的)是否存在,如果该目录不存在不会创建日志;