首页 > 解决方案 > 休眠记录器不替换 %s

问题描述

我注意到一段时间以来,hibernate 不会替换%s日志消息中的模板。我们自己的日志消息被替换得很好。我的项目使用 spring boot(包括 slf4j + logback)。

服务器启动时的休眠信息如下所示:

休眠示例

其他库也受到影响:

xnio 示例

依存关系图,按要求:https ://pastebin.com/b0QcBBnV

标签: javaspringspring-boothibernatelogback

解决方案


  • 要配置休眠使用slf4j,它需要以下属性,它需要启动应用程序
    -Dorg.jboss.logging.provider=slf4j

或在主 Spring 引导应用程序类中

    static { 
        System.setProperty("org.jboss.logging.provider", "slf4j");
    }

为弄清楚发生了什么而采取的步骤

这实际上不是一个答案,而是一些故障排除步骤,因为上面的类之一是JtaPlatformInitiator我无法复制它。

  • JtaPlatformInitiator.org.hibernate.engine.transaction.jta.platform.internal在类中的以下行放置一个断点:
    LOG.usingJtaPlatform( platform != null ? platform.getClass().getName() : "null" );
  • 当应用程序启动时,它将来到上述行。

  • 然后它将到达这个 jboss 类,你可以unformatted string看到params. 在此处输入图像描述

  • 现在一旦你进入这个方法,它应该选择其中一个并准备一个formatted string。对我来说,它org.jboss.logging.Log4j2Logger正确连接并正确连接。

    在此处输入图像描述

  • 你能检查一下在最后一步为你选择了什么课程吗?


推荐阅读