spring boot内嵌tomcat访问日志常用配置
Spring Boot 内嵌 Tomcat 访问日志常用配置
在 Spring Boot 应用中,可以通过配置内嵌 Tomcat 的 Access Log Valve 来记录 HTTP 访问日志。以下是常用配置示例及日志格式 Pattern 的详细说明。
配置示例
以下 YAML 配置展示了如何启用访问日志、指定存储目录及定义日志格式:
server:
tomcat:
accesslog:
enabled: true # 是否开启日志
directory: /tmp/accesslogs/mobile-site # 日志存储目录
pattern: '%t %a %A %m %U%q %s %D %I %B' # 日志格式
prefix: access # 日志文件前缀
rename-on-rotate: true # 是否启用日志轮转Pattern 配置说明
Tomcat 访问日志支持多种占位符变量,用于记录请求的不同维度信息。常用变量对照表如下:
| 变量 | 英文含义 | 中文说明 |
|---|---|---|
%a | Remote IP address | 远程 IP 地址(注意:经过 Nginx 等转发可能不是原始 IP) |
%A | Local IP address | 本地 IP 地址 |
%b | Bytes sent (or '-') | 发送字节数,不含 HTTP 头;若为 0 则显示 - |
%B | Bytes sent | 发送字节数,不含 HTTP 头 |
%h | Remote host name | 远程主机名称(若 resolveHosts 为 false 则显示 IP) |
%H | Request protocol | 请求协议(如 HTTP/1.1) |
%l | Remote logical username | 远程逻辑用户名(通常返回 -) |
%m | Request method | 请求方法(如 GET, POST) |
%p | Local port | 接受请求的本地端口 |
%q | Query string | 查询字符串(若存在则前缀 ?,否则为空) |
%r | First line of the request | HTTP 请求的第一行(包含方法、URI 等) |
%s | HTTP status code | HTTP 响应状态码(如 200, 404) |
%S | User session ID | 用户 Session ID |
%t | Date and time | 日期和时间(Common Log Format 格式) |
%u | Remote user | 经过认证远程用户 |
%U | Requested URL path | 请求的 URL 路径 |
%v | Local server name | 本地服务器名称 |
%D | Time taken (millis) | 处理请求的时间,单位毫秒 |
%T | Time taken (seconds) | 处理请求的时间,单位秒 |
%I | Request thread name | 当前请求线程名(可用于与堆栈日志对比排查问题) |
说明
- 版本兼容性:上述配置属性
server.tomcat.accesslog.*适用于 Spring Boot 2.x 及 3.x 版本。在 Spring Boot 2.4 之前,部分属性可能使用server.tomcat.access-log-enabled等形式。 - IP 地址获取:若应用部署在反向代理(如 Nginx)之后,
%a获取的可能是代理服务器的 IP。如需获取客户端真实 IP,通常需配合server.use-forward-headers配置或自定义 Filter 处理。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/spring-boot-nei-qian-tomcat-fang-wen-ri-zhi-chang-yong-pei-zhi.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。