按日期:
一:
if ($time_iso8601 ~ "(\d{4}-\d{2}-\d{2})") {
set $day $1;
}
access_log logs/host.access_$day.log combined;
结果:host.access_2020-08-27.log
-------------------------------------------------------------------------
二:
if ($time_iso8601 ~ "(\d{4})-(\d{2})-(\d{2})") {
set $time $1$2$3;
}
access_log logs/host.access_$time .log combined;
结果:host.access_20200826.log
两种写法其实是一样的,第一种把日期做成一个参数,第二个是把日期做成三个参数(一个括号一个参数)
combined是按默认日志格式
还可以按指定日志格式:
log_format time_log_format '$remote_addr - $remote_user [$time_local] "$request" - $request_time - $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" - [$upstream_response_time]';
access_log logs/host.access_$time .log time_log_format;
按小时生成:
if ($time_iso8601 ~ "(\d{4}-\d{2}-\d{2}T\d{2})") {
set $day $1;
}
access_log logs/host.access_$day.log combined;
结果:host.access_2020-08-27T00.log