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 在最后一步为你选择了什么吗?
我有一段时间注意到 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 在最后一步为你选择了什么吗?