配置Tomcat虚拟主机的访问日志的记录内容

重点先说清楚(关键!)

Tomcat 虚拟主机的访问日志(AccessLog)没有 “日志级别” 这个概念!
我给你用最简单的话讲明白:
  • 访问日志 AccessLog:只记录谁访问了、访问了什么、状态码固定输出,没有级别之分
  • 日志级别(info/warn/error):只属于 Tomcat 运行日志(catalina.out、localhost.log)。
你要控制的不是级别,而是访问日志要记录哪些内容,用 pattern 配置。

一、如果你想控制【访问日志记录多少内容】

直接修改 pattern,就是控制日志 “详细程度”。

1. 最简单(极简日志)

xml
pattern="common"
只记录:IP、时间、请求、状态、大小

2. 标准详细(生产推荐)

xml
pattern="%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\""

3. 超详细(调试用)

xml
pattern="%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %F"

二、如果你想控制【Tomcat 运行日志的级别】

比如 catalina.out 想只看 error,不看 info,那才叫日志级别
修改文件:conf/logging.properties
properties
# 全局级别
.level = INFO

# 控制台日志级别
java.util.logging.ConsoleHandler.level = FINE
常用级别:
  • SEVERE 只看严重错误
  • WARNING 看警告 + 错误
  • INFO 看普通信息(默认)
  • FINE 看调试信息

三、虚拟主机访问日志完整模板(直接复制)

xml
<Host name="www.test.com" appBase="testweb" autoDeploy="true">

    <!-- 访问日志(没有级别,只有格式) -->
    <Valve className="org.apache.catalina.valves.AccessLogValve"
           directory="logs"
           prefix="test_com_access"
           suffix=".log"
           fileDateFormat="yyyy-MM-dd"
           pattern="common"  <!-- 格式 = 详细程度 -->
    />

</Host>

一句话总结

  • 访问日志 = 没有级别,只有格式 pattern
  • 运行日志 = 有级别,在 logging.properties 配置
上一篇 【Linux系统编程】(十七)揭秘 Linux 进程创建与终止:从 fork 到 exit 的底层逻辑全解析
下一篇 H3C DIP分类计费技术白皮书