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

时间:2014-01-15 17:54:01

标签: java hibernate logging configuration log4j2

我最近切换到Apache log4j2,仍然无法找到使用log4j2.xml配置hibernate日志记录的方法。

因为我无法找到解决此问题的方法,所以我仍然明确地将log4j.properties文件用于hibernate。这不是最佳解决方案,因为我的log4j2.xml使用JPA appender(将日志写入db)。我不想为hibernate编写单独的逻辑。

有没有办法使用log4j2配置hibernate日志记录?

3 个答案:

答案 0 :(得分:5)

正如所建议的那样 https://issues.apache.org/jira/browse/LOG4J2-172 你可以添加系统属性来强制hibernate使用slf4j

  

-Dorg.jboss.logging.provider = SLF4J

还应将log4j-slf4j-impl添加到classpath

我的自定义解决方案: 你可以放置Spring org.jboss.logging.provider = SLF4J 在属性文件

(envConfigLocation是文件网址)

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

答案 1 :(得分:3)

我在How to redirect all logs from hibernate and spring to 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>

答案 2 :(得分:0)

可以将对log4j-1.x API的调用重定向到log4j-2.0实现。要包含的FAQ about which jars说明了如何执行此操作。执行此操作时,您可能需要从类路径中删除旧的log4j-1.x jar。