tomcat 日志详解

tomcat 日志详解

数据

聚焦技术和人文,分享干货,共同成长。

tomcat 日志详解

tomcat 日志详解

Tomcat 作为广泛使用的 Java Web 服务器,其日志系统对于应用监控、故障排查和性能优化起着至关重要的作用。下面详细介绍 Tomcat 日志的相关内容。

日志文件分类

Tomcat 的日志文件主要存放在 $CATALINA_BASE/logs 目录下,常见的日志文件有以下几种:

日志文件描述

catalina.out

包含 Tomcat 启动、停止信息以及应用程序输出到 System.out 和 System.err 的内容

catalina.YYYY-MM-DD.log

标准的 Catalina 引擎日志,记录服务器的生命周期事件

localhost.YYYY-MM-DD.log

应用程序上下文初始化和销毁的详细信息,如 Servlet 初始化错误

host-manager.YYYY-MM-DD.log

主机管理器应用的日志

manager.YYYY-MM-DD.log

应用管理器的日志

access_log.YYYY-MM-DD.txt

访问日志,记录所有 HTTP 请求的详细信息(需单独配置)

日志配置文件

Tomcat 的日志配置主要通过 $CATALINA_BASE/conf/logging.properties 文件进行,下面是该文件的核心配置项:

# 配置根日志记录器,指定使用的处理器

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

# 配置 Catalina 引擎日志

1catalina.org.apache.juli.AsyncFileHandler.level = FINE

1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs

1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.

# 配置 localhost 日志

2localhost.org.apache.juli.AsyncFileHandler.level = FINE

2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs

2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.

# 配置控制台输出

java.util.logging.ConsoleHandler.level = FINE

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

访问日志配置

若要启用访问日志,需要在 $CATALINA_BASE/conf/server.xml 中配置 Valve:

unpackWARs="true" autoDeploy="true">

prefix="localhost_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

访问日志中常用的格式模式:

模式字符描述

%h

客户端 IP 地址

%l

RFC 1413 身份信息

%u

认证的用户

%t

请求时间

%r

请求的第一行

%s

HTTP 状态码

%b

响应字节数

%{xxx}i

请求头中的 xxx 字段值

%{xxx}o

响应头中的 xxx 字段值

日志级别

Tomcat 使用 Java 标准的日志级别,这些级别从低到高依次为:

SEVERE:严重错误,通常会导致应用程序无法继续运行。

WARNING:警告信息,表明可能存在潜在问题。

INFO:一般信息,用于记录应用程序的正常运行状态。

CONFIG:配置信息,记录配置相关的内容。

FINE:细粒度信息,用于调试目的。

FINER:更细粒度的信息。

FINEST:最细粒度的信息。

可以通过修改 logging.properties 中的 level 属性来调整日志级别,例如:

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler

日志轮转

Tomcat 自身不会自动对日志进行轮转,不过可以借助以下几种方式实现:

操作系统工具:利用 cron 任务结合 logrotate 工具来实现日志轮转。

Apache Commons Daemon:配置 catalina.sh 脚本,使用 rotatelogs 命令。

第三方日志框架:把 Tomcat 配置为使用 Log4j 或 Logback,这两个框架都具备日志轮转功能。

性能优化建议

控制日志级别:在生产环境中,建议将日志级别设置为 INFO 或者更高,避免产生过多的调试信息。

合理配置访问日志:访问日志会对性能造成一定影响,可根据实际需求调整日志格式和记录频率。

使用异步日志:通过配置 AsyncFileHandler 可以减少 I/O 操作对应用性能的影响。

定期清理日志:设置自动清理策略,防止日志文件占用过多磁盘空间。

常见问题排查

问题现象可能原因排查方法

应用无法启动

配置文件错误、内存不足、端口被占用

检查 catalina.out 和 localhost.log 中是否有异常堆栈信息

404 错误

应用部署失败、上下文路径配置错误

查看 localhost.log 中是否有应用初始化失败的信息

性能问题

线程池耗尽、数据库连接泄漏、垃圾回收频繁

分析 catalina.out 中的线程转储信息,结合 JMX 监控工具进行排查

安全漏洞

存在未授权访问、SQL 注入等安全风险

检查 access_log 中是否有异常请求,如包含恶意 SQL 语句或路径遍历的请求

通过深入了解 Tomcat 的日志系统,你可以更高效地监控应用状态、快速定位问题并优化系统性能。

posted on

2025-05-19 09:02

阿陶学长

阅读(410)

评论(0)

收藏

举报

刷新页面返回顶部

相关推荐

移动集团彩云平台电脑版
365bet体育存款

移动集团彩云平台电脑版

📅 07-24 👁️ 5161
捕蝇草的生长过程 – 知花者
Bet体育365怎么提款

捕蝇草的生长过程 – 知花者

📅 07-29 👁️ 7738
「邦尼評測」華碩AI手機強嗎?Zenfone 12 Ultra 超完整評測!(超詳細優缺點 ZF12U 效能 螢幕亮度色域色準 高通8 Elite遊戲續航實測 ASUS華碩AI手機值不值得買? » 邦尼幫你
黑色裤子搭配什么颜色上衣好看
365bet体育存款

黑色裤子搭配什么颜色上衣好看

📅 07-25 👁️ 8798
利用运放设计简单有源滤波器(低通、高通、带通)
用Nero将WAV(APE)+CUE及其他无损文件刻录成CD音乐光盘
365现在还能安全提款吗

用Nero将WAV(APE)+CUE及其他无损文件刻录成CD音乐光盘

📅 08-16 👁️ 193
在 Excel 中进行随机样本选择(完整指南)
Bet体育365怎么提款

在 Excel 中进行随机样本选择(完整指南)

📅 08-15 👁️ 9238
《扶桑花女孩之舞》:美丽的草裙舞与主角的成长之路!
365现在还能安全提款吗

《扶桑花女孩之舞》:美丽的草裙舞与主角的成长之路!

📅 07-10 👁️ 9687
朝鲜取消世界杯预选主场赛,是在跟日本“拉锯”?
365现在还能安全提款吗

朝鲜取消世界杯预选主场赛,是在跟日本“拉锯”?

📅 07-14 👁️ 444