簡體   English   中英

如何使用log4j2.xml配置hibernate日志記錄?

[英]How to configure hibernate logging using log4j2.xml?

我最近切換到Apache log4j2,仍然找不到使用log4j2.xml配置hibernate日志記錄的方法。

因為我無法找到解決此問題的方法,所以我仍然明確地將log4j.properties文件用於hibernate。 這不是最佳解決方案,因為我的log4j2.xml使用JPA appender(將日志寫入db)。 我不想為hibernate編寫單獨的邏輯。

有沒有辦法使用log4j2配置hibernate日志記錄?

正如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是文件url)

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

我找到了這個問題的答案: 如何將所有日志從休眠和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>

可以將對log4j-1.x API的調用重定向到log4j-2.0實現。 有關哪些罐子常見問題解答說明了如何做到這一點。 執行此操作時,您可能需要從類路徑中刪除舊的log4j-1.x jar。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM