Skip to content

15.4 日志功能

Thymeleaf 对日志功能十分重视,始终致力于通过日志接口输出尽可能多的实用信息。

Thymeleaf 底层使用的日志库是 SLF4J——它本质上是一个日志门面(日志桥接层),可以适配你在应用中想要使用的任意日志实现框架(例如 Log4j)。

Thymeleaf 的各类类会根据所需的详细程度,输出 TRACEDEBUGINFO 级别的日志。除了通用日志外,它还为 TemplateEngine 类关联了三个专用日志器(Logger),你可以针对不同用途单独配置它们:

  1. org.thymeleaf.TemplateEngine.CONFIG
    会在库初始化阶段输出详细的配置信息。

  2. org.thymeleaf.TemplateEngine.TIMER
    会输出每个模板的处理耗时信息(对性能基准测试非常有用!)。

  3. org.thymeleaf.TemplateEngine.cache
    是一组日志器的前缀,用于输出与缓存相关的特定信息。尽管缓存日志器的名称可由用户配置(可能会变动),但默认包含以下两个:

    • org.thymeleaf.TemplateEngine.cache.TEMPLATE_CACHE(模板缓存日志)
    • org.thymeleaf.TemplateEngine.cache.EXPRESSION_CACHE(表达式缓存日志)

以下是使用 Log4j 配置 Thymeleaf 日志体系的示例:

properties
# 配置 Thymeleaf 核心日志级别为 DEBUG
log4j.logger.org.thymeleaf=DEBUG
# 配置配置日志为 TRACE(最详细)
log4j.logger.org.thymeleaf.TemplateEngine.CONFIG=TRACE
# 配置耗时日志为 TRACE
log4j.logger.org.thymeleaf.TemplateEngine.TIMER=TRACE
# 配置模板缓存日志为 TRACE
log4j.logger.org.thymeleaf.TemplateEngine.cache.TEMPLATE_CACHE=TRACE

补充说明

  • 日志级别优先级TRACE < DEBUG < INFO < WARN < ERROR,级别越低输出的日志越详细;
  • SLF4J 作用:解耦日志 API 和具体实现,你可以在不修改代码的情况下切换 Log4j、Logback 等日志框架;
  • 专用日志器的价值:按需开启不同日志器(如仅开启 TIMER 排查性能问题),避免日志冗余,精准定位问题。

总结

  1. Thymeleaf 基于 SLF4J 实现日志功能,可适配任意主流日志框架,输出 TRACE/DEBUG/INFO 等多级别日志;
  2. TemplateEngine 提供 CONFIG/TIMER/cache 三类专用日志器,可单独配置以满足不同调试/监控需求;
  3. 可通过日志配置文件(如 Log4j 的 .properties)精准控制 Thymeleaf 各模块的日志级别。