如何配置Tomcat日志级别
Tomcat的日志系统默认使用java.util.logging(JUL),主要通过conf/logging.properties文件配置日志级别、处理器及输出格式。以下是详细配置步骤:
Tomcat的主日志配置文件位于<Tomcat安装目录>/conf/logging.properties(如/opt/tomcat/conf/logging.properties)。此外,server.xml可用于配置访问日志(非应用日志),但本文聚焦于JUL日志级别的配置。
OFF(关闭)、SEVERE(严重错误)、WARNING(警告)、INFO(一般信息)、CONFIG(配置信息)、FINE(详细调试)、FINER(更详细调试)、FINEST(最详细调试)。级别越高,输出的日志越少。ConsoleHandler:输出到控制台(默认开启)。FileHandler:输出到文件(如catalina.out)。<包名>.level = <级别>、<包名>.handlers = <处理器名>。logging.properties文件根日志级别控制所有未单独配置的包的日志输出,默认值为INFO。若需更详细的日志,可调整为FINE或FINER:
.level = INFO # 可改为 FINE/FINER/FINEST(生产环境建议保留INFO)
控制台处理器将日志输出到Tomcat启动时的控制台窗口,适合开发调试:
handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = INFO # 控制台日志级别
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
文件处理器将日志写入指定文件,适合生产环境长期保存:
1catalina.org.apache.juli.FileHandler.level = INFO # 文件日志级别
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs # 日志目录(默认为Tomcat的logs文件夹)
1catalina.org.apache.juli.FileHandler.prefix = catalina. # 日志文件前缀(如catalina.2025-09-26.log)
1catalina.org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter
针对Tomcat组件(如容器、认证、Servlet)或自定义应用包设置更细粒度的日志级别:
# Tomcat容器日志(记录请求处理、容器生命周期等)
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
# 认证模块日志(记录登录、权限检查等)
org.apache.catalina.authenticator.level = FINE
org.apache.catalina.authenticator.handlers = java.util.logging.ConsoleHandler
# 自定义应用日志(替换com.yourapp为实际包名)
com.yourapp.level = FINE
com.yourapp.handlers = java.util.logging.ConsoleHandler
# 根日志级别
.level = INFO
# Handlers(控制台+文件)
handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
# 控制台处理器
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
# 文件处理器(catalina.log)
1catalina.org.apache.juli.FileHandler.level = INFO
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter
# 特定包日志(localhost容器)
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
server.xml中的访问日志若需记录HTTP请求日志(如访问时间、URL、状态码),可修改conf/server.xml中的AccessLogValve:
<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="%h %l %u %t "%r" %s %b" />
</Host>
pattern:日志格式,常用占位符:
%h:客户端IP%r:请求行(如GET /index.html HTTP/1.1)%s:响应状态码%b:发送字节数(不包括HTTP头)修改配置文件后,需重启Tomcat才能应用更改:
<Tomcat安装目录>/bin/shutdown.bat,再运行startup.bat。./<Tomcat安装目录>/bin/shutdown.sh,再运行./startup.sh。重启后,检查<Tomcat安装目录>/logs目录下的日志文件:
ConsoleHandler,会在启动时输出到终端。catalina.out(或按prefix命名的文件,如catalina.2025-09-26.log)。localhost.<日期>.log(对应localhost容器的日志)。INFO或WARNING,避免FINE及以上级别产生过多日志影响性能。