我最近切換到Apache log4j2,仍然找不到使用log4j2.xml配置hibernate日誌記錄的方法。如何使用log4j2.xml配置hibernate日誌記錄?
因爲我無法找到解決此問題的方法,我仍然明確使用log4j.properties文件進行休眠。這不是最好的解決方案,因爲我的log4j2.xml使用JPA appender(將日誌寫入db)。我不想爲休眠編寫單獨的邏輯。
有沒有辦法使用log4j2配置hibernate日誌記錄?
我最近切換到Apache log4j2,仍然找不到使用log4j2.xml配置hibernate日誌記錄的方法。如何使用log4j2.xml配置hibernate日誌記錄?
因爲我無法找到解決此問題的方法,我仍然明確使用log4j.properties文件進行休眠。這不是最好的解決方案,因爲我的log4j2.xml使用JPA appender(將日誌寫入db)。我不想爲休眠編寫單獨的邏輯。
有沒有辦法使用log4j2配置hibernate日誌記錄?
可以將對log4j-1.x API的調用重定向到log4j-2.0實現。包含的FAQ about which jars解釋瞭如何執行此操作。當您這樣做時,您可能需要從類路徑中移除舊的log4j-1.x jar。
正如 https://issues.apache.org/jira/browse/LOG4J2-172 建議你可以添加系統屬性來強制Hibernate使用SLF4J
-Dorg.jboss.logging.provider = SLF4J
還的log4j-SLF4J-IMPL應添加到類路徑
我的自定義解決方案: 與春天你可以放置 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>
我試過了,它的工作原理。 – Stony
我發現這個問題的答案在: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>
我按照常見問題中的說明進行操作,但沒有幫助。必須有其他必需的東西 - 可能是屬性設置。 – Adam