Tomcat
日志分为两类, 访问日志
记录访问时间、IP 等信息, 运行日志
记录异常错误等信息。
# 运行日志
在 Tomcat 中,常见的五类运行日志是:Catalina
日志:Catalina 日志是 Tomcat 服务器的核心组件,用于记录 Tomcat 的启动、关闭以及关键事件的详细信息。它包含了 Tomcat 的系统级别日志,如类加载、Servlet 初始化、请求处理等。Catalina 日志对于故障排除和性能分析非常有用。Localhost
日志:Localhost 日志记录了与 Tomcat 的默认虚拟主机(localhost)相关的请求和活动。它包含了来自 localhost 虚拟主机的访问日志,可以用于跟踪和分析对 Tomcat 服务器的本地请求。Manager
日志:Manager 日志记录了 Tomcat 管理应用程序(manager web 应用)的活动。当您使用 Tomcat 的管理应用程序进行部署、启动、停止和重新加载 Web 应用程序时,Manager 日志将记录相关的操作和事件。Admin
日志:Admin 日志是 Tomcat 的管理界面(Tomcat Admin Console)的日志,用于记录与管理界面相关的活动和事件。它包含了对 Tomcat 管理界面的访问日志以及管理操作的日志记录。Host-manager
日志:Host-manager 日志记录了 Tomcat 的虚拟主机管理应用程序(host-manager web 应用)的活动。当您使用虚拟主机管理应用程序进行虚拟主机的创建、删除和修改时,Host-manager 日志将记录相关的操作和事件。
配置文件路径: Tomcat安装目录/conf/logging.properties
#可配置项 (5 类日志):catalina、localhost、manager、admin、host-manager | |
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, | |
3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler | |
# 日志输出为输出到文件和输出到控制台 | |
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler | |
# 日志输出级别:SEVERE (最高级别) > WARNING > INFO > CONFIG > FINE > FINER (精心) > FINEST (所有内容,最低级别) | |
# 配置文件使 catalina 日志输出级别为 FINE | |
1catalina.org.apache.juli.FileHandler.level = FINE | |
#catalina 文件输出位置 | |
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs | |
#catalina 日志前缀为 catalina | |
1catalina.org.apache.juli.FileHandler.prefix = catalina. | |
# 配置文件使 localhost 日志输出级别为 FINE | |
2localhost.org.apache.juli.FileHandler.level = FINE | |
#localhost 文件输出位置 | |
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs | |
#localhost 日志前缀为 localhost | |
2localhost.org.apache.juli.FileHandler.prefix = localhost. | |
# 配置文件使 manager 日志输出级别为 FINE | |
3manager.org.apache.juli.FileHandler.level = FINE | |
#manager 文件输出位置 | |
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs | |
#manager 日志前缀为 manager | |
3manager.org.apache.juli.FileHandler.prefix = manager. | |
# 配置文件使 host-manager 日志输出级别为 FINE | |
4host-manager.org.apache.juli.FileHandler.level = FINE | |
#host-manager 文件输出位置 | |
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs | |
#host-manager 日志前缀为 host-manager | |
4host-manager.org.apache.juli.FileHandler.prefix = host-manager. | |
# 配置文件使控制台日志输出级别为 FINE | |
java.util.logging.ConsoleHandler.level = FINE | |
# 控制台日志输出格式 | |
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter | |
#localhost 日志文件输出级别为 INFO | |
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO | |
#localhost 日志文件输出处理类 2localhost.org.apache.juli.FileHandler | |
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler | |
#manager 日志文件输出级别为 INFO | |
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO | |
#manager 日志文件输出处理类 3manager.org.apache.juli.FileHandler | |
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler | |
#host-manager 日志文件输出级别为 INFO | |
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO | |
#host-manager 日志文件输出处理类 4host-manager.org.apache.juli.FileHandler | |
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler |
# 访问日志
配置文件路径: Tomcat安装目录/conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" | |
prefix="localhost_access_log" suffix=".txt" | |
pattern="%h %l %u %t "%r" %s %b" | |
resolveHosts="true" /> |
参数说明如下:className
:官方说明必须按照默认配置不可更改。directory
:日志文件位置。prefix
:日志文件前缀。suffix
:日志文件后缀。resolveHosts
:用于控制是否解析远程主机的 IP 地址为主机名。当设置为 true 时,Tomcat 会尝试将远程主机的 IP 地址解析为主机名,并将主机名记录在访问日志中。当设置为 false 时,Tomcat 将直接记录远程主机的 IP 地址。默认值是 false,即默认情况下不会进行主机名解析。pattern
:日志模式参数,说明见下表。
参数 | 描述 |
---|---|
%a | 远程 IP 地址 |
%A | 本地 IP 地址 |
%b | 响应的字节数(不包括响应头) |
%B | 响应的字节数(包括响应头) |
%h | 远程主机名 |
%H | 请求的协议 |
%l | 远程逻辑用户名(通常不可用) |
%m | 请求的 HTTP 方法 |
%p | 本地端口号 |
%q | 请求的查询字符串 |
%r | 完整的 HTTP 请求行 |
%s | 响应的 HTTP 状态码 |
%t | 请求的时间戳 |
%u | 远程用户身份验证(如果启用) |
%U | 请求的 URL 路径 |
%v | 本地服务器名 |
这些参数可以根据需要进行组合和定制,以满足特定的日志记录需求。例如,以下是一个常见的 pattern
参数示例:
"%h %l %u %t \"%r\" %s %b" |
这将记录远程主机名、远程逻辑用户名、远程用户身份验证、请求的时间戳、完整的 HTTP 请求行、响应的 HTTP 状态码和响应的字节数(不包括响应头)。
# 日志分割
切割日志的目的是限制单个日志文件的大小,以避免文件过大对系统性能和存储空间的影响。Tomcat 本身并没有内置的日志切割功能,但可以使用第三方的日志切割工具来实现。一些常见的工具包括 Log4j
、 Logback
和 Cronolog
等。