无需借助logrotate等日志处理工具。
配置
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
map $time_iso8601 $logdate {
'~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
default 'date-not-found';
}
access_log /var/log/nginx/access-$logdate.log main;
open_log_file_cache max=10;
}
open_log_file_cache
每一条日志记录的写入都是先打开文件再写入记录,然后关闭日志文件。如果日志文件路径中使用了变量为提高性能,可以使用open_log_file_cache指令设置日志文件描述符的缓存。
使用时遇到了两个问题
1.出现权限不够的问题,无法写日志,在设置中把user nginx;改为user root;或者给nginx用户log目录的写权限
2.出现错误日志:testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request,
这个问题有两个办法一个是创建/etc/nginx/html目录,另外一个就是在access_log前加上root path(path要绝对路径,是一个可用的真实目录)
设置后重启nginx就ok了