Hibernate 记录器不替换 %s

Hibernate logger does not replace %s

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

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

其他库也受到影响:

依赖图,按要求:https://pastebin.com/b0QcBBnV

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

或在 Main Spring 启动应用程序中 class

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

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

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

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

  • 然后就到了这个jbossclass你可以看到unformatted string还有params

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

  • 你能看看 class 在最后一步为你选择了什么吗?