無需借助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了