温馨提示×

如何过滤tomcat错误日志

小樊
42
2026-10-09 12:19:20
栏目: 智能运维

在 Tomcat 中“过滤错误日志”通常有两种场景:(1)不把某些错误写进日志;(2)从已有日志中筛出错误。下面分别说明。


一、从 Tomcat 日志中过滤错误(查看/分析)

1. 查看 catalina.out 中的 ERROR

grep -i "ERROR" catalina.out

或只看异常:

grep -A 20 "Exception" catalina.out

2. 按时间过滤

sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' catalina.out

3. 排除某些已知错误

grep -v "KnownWarning" catalina.out

二、在 Tomcat 中过滤/控制错误日志(配置层面)

Tomcat 使用 JULI(java.util.logging) 或 Log4j(取决于配置)。

方式一:使用 Tomcat 自带的 logging.properties

文件位置:

$TOMCAT_HOME/conf/logging.properties

示例:只记录 WARNING 及以上

org.apache.catalina.level = WARNING

忽略某个包的错误:

com.example.badpackage.level = OFF

方式二:使用 Log4j(推荐,更灵活)

如果你项目使用 Log4j:

<Logger name="org.apache.catalina" level="error" />
<Logger name="com.xxx.noisy" level="off" />

或只输出 ERROR:

<Root level="error">
    <AppenderRef ref="Console"/>
</Root>

三、忽略特定异常(代码/业务层)

如果是你自己的代码错误,建议:

  • 在代码中捕获并处理
  • 使用日志级别控制(warn / error)
try {
    // 业务代码
} catch (KnownException e) {
    log.warn("忽略已知异常", e);
}

四、常见需求示例

✅ 不想看到 404 错误

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

✅ 只保留 ERROR 到单独文件

使用 Log4j 的 LevelFilter 或 ThresholdFilter


总结

  • 看日志:grep / sed
  • 控日志:logging.properties 或 log4j
  • 屏蔽错误:level = OFF 或代码捕获

如果你能说明:

  • Tomcat 版本
  • 是否用 Log4j
  • 想“过滤哪种错误”

我可以给你更精确的配置。

0 踩