Gunicorn 访问日志格式详解与自定义
Gunicorn 访问日志默认类似 Apache combined 格式,用 --access-logformat 自定义:%(h)s 客户端 IP、%(r)s 请求行、%(s)s 状态码、%(D)s 响应微秒等。本文给出变量表与 JSON 格式示例。
Gunicorn 访问日志默认格式类似 Apache combined:%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s";用 --access-logformat 或配置文件的 access_log_format 自定义。
常用变量速查
| 变量 | 含义 |
|---|---|
%(h)s |
客户端 IP |
%(t)s |
时间 |
%(r)s |
请求行(方法+路径+协议) |
%(s)s |
状态码 |
%(b)s |
响应体字节数 |
%(f)s / %(a)s |
Referer / User-Agent |
%(D)s |
响应耗时(微秒) |
%(T)s |
响应耗时(秒) |
%({X-Forwarded-For}i)s |
任意请求头 |
自定义示例:输出 JSON
gunicorn app:app \
--access-logfile - \
--access-logformat '{"ip":"%(h)s","method":"%(m)s","path":"%(U)s","status":%(s)s,"duration_us":%(D)d,"ua":"%(a)s"}'
JSON 格式便于日志平台直接解析,无需 grok。生产排障最有价值的补充变量是 %(D)s(响应耗时)。
观测云对照
JSON 访问日志经观测云 DataKit 采集后自动结构化,接口耗时可聚合分析并与 APM 链路关联。
常见问题(FAQ)
Q:修改后何时生效? 重启 Gunicorn;--reload 模式下改配置也会重载。
Q:能关掉访问日志只留错误日志吗? --access-logfile 不设置即关闭;错误日志用 --error-logfile。