如何配置Tomcat日志记录访问IP
导读:配置 Tomcat 访问日志以记录客户端 IP 一、基本配置步骤 打开 $CATALINA_HOME/conf/server.xml,在 元素内添加或修改 AccessLogValve。 通过 pattern 指定包含客户端 IP 的格...
配置 Tomcat 访问日志以记录客户端 IP
一、基本配置步骤
- 打开 $CATALINA_HOME/conf/server.xml,在 元素内添加或修改 AccessLogValve。
- 通过 pattern 指定包含客户端 IP 的格式,常用为 %a(远程 IP 地址)。
- 示例(记录远程 IP、时间、请求行、状态码、字节数):
< Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> < Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%a %l %u %t "%r" %s %b" /> < /Host> - 保存后重启 Tomcat,访问日志将输出到 logs/localhost_access_log.yyyy-MM-dd.txt,其中每条记录的第一个字段即为客户端 IP。
二、常用 pattern 占位符
- %a:远程 IP 地址(推荐用于记录访问者 IP)
- %A:本地 IP 地址
- %h:远程主机名(若 DNS 反向解析开启,可能为域名)
- %l:远程逻辑用户名(identd,通常为 -)
- %u:远程已认证用户(若未认证为 -)
- %t:日期和时间(通用日志格式)
- %r:请求第一行(方法、URI、协议)
- %s:响应状态码
- %b:发送的字节数(不含 HTTP 头,为 0 时显示 -)
- %B:发送的字节数(不含 HTTP 头)
- %D:处理时间(毫秒)
- %T:处理时间(秒)
- 提示:将 resolveHosts 设为 false 可避免 DNS 反查,直接记录 IP、提升性能。
三、反向代理或负载均衡场景
- 当存在 Nginx/HAProxy/ELB 等前置代理时,Tomcat 看到的远程地址通常是代理的 IP,需在代理层设置 X-Forwarded-For 并在 Tomcat 日志中使用 %{
X-Forwarded-For}
i 记录原始客户端 IP:
- Nginx 示例:
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - Tomcat AccessLogValve 示例:
< Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%{ X-Forwarded-For} i %l %u %t "%r" %s %b" />
- Nginx 示例:
- 若代理设置了 X-Real-IP,也可使用 %{ X-Real-IP} i 记录。确保仅信任来自代理的头部,避免客户端伪造。
四、日志轮转与路径等常用参数
- directory:日志目录,默认 logs(相对 $CATALINA_HOME)。
- prefix/suffix:文件名前缀/后缀,如 localhost_access_log. 与 .txt。
- pattern:日志格式,可用 common 或 combined 预设,也可自定义。
- resolveHosts:是否进行 DNS 反查(建议 false)。
- rotatable:是否按日期轮转(默认 true)。
- fileDateFormat:自定义滚动文件名日期格式,如 yyyy-MM-dd.HH 实现按小时滚动。
- condition:条件日志开关,用于按需记录。
- 示例(按小时滚动,保留 30 天):
< Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="access." suffix=".log" pattern="%a %t "%r" %s %b %D" rotatable="true" fileDateFormat="yyyy-MM-dd.HH" maxDays="30" /> - 修改配置后需重启 Tomcat 生效。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何配置Tomcat日志记录访问IP
本文地址: https://pptw.com/jishu/751933.html
