在 Tomcat 中“过滤错误日志”通常有两种场景:(1)不把某些错误写进日志;(2)从已有日志中筛出错误。下面分别说明。
grep -i "ERROR" catalina.out
或只看异常:
grep -A 20 "Exception" catalina.out
sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' catalina.out
grep -v "KnownWarning" catalina.out
Tomcat 使用 JULI(java.util.logging) 或 Log4j(取决于配置)。
文件位置:
$TOMCAT_HOME/conf/logging.properties
示例:只记录 WARNING 及以上
org.apache.catalina.level = WARNING
忽略某个包的错误:
com.example.badpackage.level = OFF
如果你项目使用 Log4j:
<Logger name="org.apache.catalina" level="error" />
<Logger name="com.xxx.noisy" level="off" />
或只输出 ERROR:
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
如果是你自己的代码错误,建议:
try {
// 业务代码
} catch (KnownException e) {
log.warn("忽略已知异常", e);
}
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
使用 Log4j 的 LevelFilter 或 ThresholdFilter
grep / sedlogging.properties 或 log4jlevel = OFF 或代码捕获如果你能说明:
我可以给你更精确的配置。