You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带毫秒的Nginx访问日志:时间格式疑问及添加方法咨询

关于Nginx访问日志时间格式的两个问题解答

1. 时间格式里的T是什么意思?

那个T是ISO 8601标准时间格式里的日期与时间分隔符,专门用来把日期段和时间段明确分开。就拿你给出的2018-03-20T04:11:42-07:00来说,2018-03-20是日期部分(年-月-日),T后面的04:11:42是具体时间(时:分:秒),最后的-07:00代表时区偏移(比UTC时间晚7小时)。这种格式是国际通用的标准时间表示法,Nginx里如果用了$time_iso8601这个内置变量生成日志时间,就会输出这种格式。

2. 怎么给日志时间添加毫秒部分?

要给Nginx日志时间加上毫秒,核心是修改日志格式配置,用到Nginx提供的毫秒相关变量。下面给你两种实用的配置方式:

方式一:在ISO 8601格式基础上补毫秒

如果你想保留原有的ISO 8601风格,只是加上毫秒,可以定义这样的日志格式:

log_format iso_with_ms '$remote_addr - $remote_user [$time_iso8601.$msec_ms] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"';

这里的$msec_ms是Nginx专门提供的变量,会提取出$msec(完整的秒+毫秒,比如1521539502.123)里的三位毫秒数。配置后日志时间会变成2018-03-20T04:11:42-07:00.123这种形式。

方式二:自定义带毫秒的时间格式

如果你偏好更直观的日期 时间.毫秒 时区格式,比如2018-03-20 04:11:42.123 -07:00,可以结合$time_local和$msec_ms来配置:

log_format custom_with_ms '$remote_addr - $remote_user [$time_local.$msec_ms] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

注意$time_local默认输出的是03/Mar/2018:04:11:42 -0700这种格式,如果需要严格的年-月-日形式,可能需要借助第三方扩展模块,但大多数场景下上面两种方式已经能满足需求。

配置完自定义日志格式后,要在对应的server或location块里指定使用这个格式,比如:

access_log /var/log/nginx/access.log iso_with_ms;

最后重启Nginx让配置生效:

sudo systemctl restart nginx

内容的提问来源于stack exchange,提问作者Unnikrishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:17:00