【Nginx】自定义日志时期格式

TangLu 未命名 2023-04-06 550 0

nginx日志默认提供了$time_local和$time_iso8601两种时间格式,输出格式类似为"01/Jul/2020:10:56:37" 或者 "2020-07-01T11:16:35+08:00"。但是为了便于日常分析,通常需要将日志中的日期格式显示为yyyy-MM-dd HH:mm:ss,比如2023-04-06 11:21:00。为了实现这个需求就需要使用自定义变量对Nginx的日志格式进行调整

1、在server中定义好变量

server {
	....
	if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})") {
			set $year $1;
			set $month $2;
			set $day $3;
			set $hour $4;
			set $minutes $5;
			set $seconds $6;
	}
	....
}


2、日志格式中引用变量

# 官方默认日志格式
log_format  main  '$server_name $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

# 输出结果
127.0.0.1 - - [01/Jul/2020:03:25:17 +0800] "GET /resource/js/bootstrap.min.js HTTP/1.1" 200 36816 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36" "192.168.0.1"


# 修改日志格式
log_format  main  '$server_name $remote_addr - $remote_user $year-$month-$day $hour:$minutes:$seconds "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

#输出结果
182.150.63.178 - hz22047713 2023-04-06 16:46:23 "GET /assets/index-94a36651.css HTTP/1.1" 304 0 "http://43.207.177.27/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62" "-"


评论