我最近切换到Apache log4j2,仍然无法找到使用log4j2.xml配置hibernate日志记录的方法。
因为我无法找到解决此问题的方法,所以我仍然明确地将log4j.properties文件用于hibernate。这不是最佳解决方案,因为我的log4j2.xml使用JPA appender(将日志写入db)。我不想为hibernate编写单独的逻辑。
有没有办法使用log4j2配置hibernate日志记录?
答案 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。