簡體   English   中英

log4j2 沒有找到 1 個記錄器的附加程序

[英]log4j2 No appenders found for 1 logger

我在配置 log4j2.xml 文件以包含休眠日志記錄時遇到問題。

這是我的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
    <Properties>
        <Property name="logDir" value="${env:MY_APP}/logs"/>
    </Properties>
    <Appenders>
        <RollingFile name="MY_APP" fileName="${logDir}/my_app.log" bufferedIO="true" filePattern="${logDir}/my_app-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="[%t] %d %-5p %x %m%n"/>
            <Policies>
                <OnStartupTriggeringPolicy/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${logDir}" maxDepth="1">
                    <IfFileName glob="my_app-*.log.gz" />
                    <IfLastModified age="31d" />
                </Delete>
            </DefaultRolloverStrategy>
         </RollingFile>
     </Appenders>
     <Loggers>
         <Root level="trace">
             <AppenderRef ref="MY_APP" level="debug"/>
         </Root>
         <Logger name="com.company" level="info"/>
         <Logger name="com.companyName" level="info"/>
         <Logger name="com.companyName.myApp" level="debug"/>
         <Logger name="org.hibernate" level="info"/>
    </Loggers>

在我的 jar 啟動時,我將以下內容打印到控制台:

log4j:WARN No appenders could be found for logger(org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我似乎將日志從我的應用程序獲取到我的 RollingFile 中,但我不明白為什么這個休眠記錄器沒有使用相同的 appender。

非常感謝任何幫助!

我有一個類似的問題,但我的問題與我創建的特定類有關,而不是與庫中的類有關。 但是,我發現專門針對log4j2的錯誤是我使用了不正確的 Logger。

我的代碼曾經是:

import org.apache.log4j.Logger;

public class SomeClass {
   static Logger logger = Logger.getLogger(SomeClass.class);
}

最終為我工作的是:

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

public class SomeClass {
   static Logger logger = LogManager.getLogger(SomeClass.class.getName());
}

注意:導入的差異以及記錄器是如何“創建”的。

這就是為我解決這個確切錯誤的原因,但它不在庫中。

對我來說,我的項目中也有 Hibernate,但沒有任何額外的配置 Hibernate 會自動將日志記錄到我的所有 appender。 他們可能已經在對軟件包的更新中修復了這個問題。

建議(如果尚未修復) - 也許嘗試升級 Hibernate 的包/庫,看看它是否有效。 或者,看看您是否可以找出記錄器是如何創建的,以便利用它使用org.apache.logging.log4j.Logger INSTEAD of org.apache.log4j.Logger

實際上,控制台顯示的事實

log4j:WARN No appenders could be found for logger(org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

表示 log4j 1.x jars 仍然存在於類路徑中,並且沒有提供 log4j 1.x 配置。 對此的修復是用 Log4j 2 中的 log4j-1.2-api jar 替換 log4j 1.x jar。

暫無
暫無

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

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