过滤 Tomcat 日志信息,通常取决于你想过滤什么内容、在什么阶段过滤。下面按常见场景给你一套实用方案,从简单到进阶。
grep 过滤日志内容# 查看 catalina.out 中包含 ERROR 的行
grep "ERROR" logs/catalina.out
# 查看某个时间段的日志
grep "2025-01-20 10:" logs/catalina.out
# 排除某些日志
grep -v "DEBUG" logs/catalina.out
# 实时查看并过滤
tail -f logs/catalina.out | grep "Exception"
✅ 适合:临时排查问题
logging.properties(Tomcat 自带日志)Tomcat 使用 JUL(java.util.logging)
文件位置:
conf/logging.properties
示例:只输出 WARNING 及以上
.level= WARNING
catalina.org.apache.juli.AsyncFileHandler.level = WARNING
localhost.org.apache.juli.AsyncFileHandler.level = WARNING
常见级别(从低到高):
ALL < FINEST < FINER < FINE < INFO < WARNING < SEVERE
✅ 优点:不丢日志,只控制输出级别
✅ 适合:生产环境
<Logger name="org.apache" level="error" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<Logger name="org.springframework" level="warn"/>
<Logger name="com.xxx" level="debug"/>
<logger name="org.apache" level="ERROR"/>
<logger name="com.xxx" level="INFO"/>
✅ 适合:Spring Boot / 大型项目
<RollingFile name="ErrorFile" fileName="logs/error.log">
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
</RollingFile>
<Valve className="org.apache.catalina.valves.AccessLogValve"
pattern="%h %l %u %t "%r" %s %b"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
conditionIf="ignore"
/>
或在代码中设置请求属性:
request.setAttribute("ignore", "true");
✅ 适合:屏蔽健康检查、监控请求
logs/catalina.out {
daily
rotate 7
missingok
notifempty
}
| 需求 | 推荐方式 |
|---|---|
| 临时查看错误 | grep ERROR |
| 控制日志级别 | logging.properties |
| Spring 项目 | Log4j / Logback |
| 去掉 DEBUG | 调高日志级别 |
| 屏蔽访问日志 | AccessLogValve |
| 日志太大 | 按大小/时间滚动 |
logging.properties 或 log4j.xml你可以直接贴出: