Java 休眠记录器不替换%s

Java 休眠记录器不替换%s,java,spring,spring-boot,hibernate,logback,Java,Spring,Spring Boot,Hibernate,Logback,我注意到,hibernate并没有取代日志消息中的%s模板。我们自己的日志信息被很好地替换了。我的项目使用SpringBoot(包括slf4j+logback) 服务器启动时的休眠信息如下所示: 其他LIB也受到影响: 依赖关系图,按要求: 要将hibernate配置为使用slf4j,它需要以下属性,它需要使用 或者在主Spring引导应用程序类中 static { System.setProperty("org.jboss.logging.provid

我注意到,hibernate并没有取代日志消息中的
%s
模板。我们自己的日志信息被很好地替换了。我的项目使用SpringBoot(包括slf4j+logback)

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

其他LIB也受到影响:

依赖关系图,按要求:

  • 要将hibernate配置为使用
    slf4j
    ,它需要以下属性,它需要使用
或者在主Spring引导应用程序类中

    static { 
        System.setProperty("org.jboss.logging.provider", "slf4j");
    }
找出发生了什么的步骤

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

  • 将断点放在类
    JtaPlatformInitiator.org.hibernate.engine.transaction.jta.platform.internal
    的下一行:
  • 当应用程序启动时,它将到达上面的行

  • 然后它将到达这个jboss类,您可以看到
    未格式化字符串
    以及
    参数

  • 现在,一旦进入这个方法,它应该选择其中一个,并准备一个
    格式化字符串。对我来说,它转到了
    org.jboss.logging.Log4j2Logger
    ,并且正确连接

  • 您能检查一下在最后一步中为您选择的课程吗


你能做一个
mvn帮助:有效的pom
添加与日志相关的依赖项吗?我已经添加了依赖项。我有相同的类可供选择,但对我来说,它转到了“JBossLogManagerLogger”.您是否尝试深入该类,因为它仍然没有连接,而是进一步委托,以便您可以看到字符串和参数的连接发生在何处?我将其追溯到
org.slf4j.bridge.SLF4JBridgeHandler#getMessageI18N
方法,它完全忽略设置的
LogRecord
s属性
formatStyle=PRINTF
。(Params在那里,所以它应该可以做模板。)谢谢!我的直觉是,它与jboss记录器有关。这个问题似乎只存在于jboss相关的DEP中:hibernate、netty、undertow。我可能已经深入了解了这一点。您可以尝试使用以下选项逐一启动应用程序吗?1)
-Dorg.jboss.logging.provider=log4j2
2)
-Dorg.jboss.logging.provider=slf4j
如果它们中的任何一个有效,那么实际上如何排除
JBossLogManagerProvider
    static { 
        System.setProperty("org.jboss.logging.provider", "slf4j");
    }
    LOG.usingJtaPlatform( platform != null ? platform.getClass().getName() : "null" );