如何使用log4j2.xml配置Hibernate日志记录?

10
我最近切换到了Apache log4j2,但仍无法找到使用log4j2.xml配置Hibernate日志记录的方法。
因为我找不到解决此问题的方法,所以我仍然明确地使用log4j.properties文件来处理Hibernate。这并不是最好的解决方案,因为我的log4j2.xml使用JPA appender(将日志写入数据库)。我不想为Hibernate编写单独的逻辑。
是否有一种方法可以使用log4j2配置Hibernate日志记录?
3个回答

5
根据https://issues.apache.org/jira/browse/LOG4J2-172中的建议,您可以添加系统属性来强制Hibernate使用slf4j。

-Dorg.jboss.logging.provider=slf4j

同时,log4j-slf4j-impl应该被添加到类路径中。

我的自定义解决方案:

使用Spring,您可以将org.jboss.logging.provider=slf4j放置在属性文件中。

(envConfigLocation是文件URL)

<bean id="propertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
   <property name="location" ref="envConfigLocation" />
   <property name="order" value="1"/>
</bean>

4
我在这个问题的解答中找到了答案:如何将Hibernate和Spring的所有日志重定向到log4j2? 基本上,log4j2无法与Hibernate一起使用,所以必须使用log4j。但是您仍然可以使用您的log4j2配置。您需要以下依赖项,然后魔术就会在后台发生。
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.1</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.1</version>
</dependency>
<dependency>
<!--HIBERNATE LOGGER (log4j)-->
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.6</version>
</dependency>

0

可以将对log4j-1.x API的调用重定向到log4j-2.0实现。有关包括哪些Jars的常见问题解答说明如何执行此操作。当您执行此操作时,可能需要从类路径中删除旧的log4j-1.x jar。


我按照常见问题解答中的指示操作,但没有起到帮助作用。可能还需要其他东西 - 很可能是那个属性设置。 - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接