2015-09-04 96 views
1

可能我搜索了所有的互聯網,但我必須錯過一些東西。Log4j2沒有看到配置xml

我根據文檔配置Log4j2和Commons-logging。我添加了log4j2.xml,但其配置沒有影響應用程序輸出。我看起來像Log4j不讀這個文件。下面是我的配置:

的pom.xml

<properties> 
    <log4j2.version>2.3</log4j2.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>${log4j2.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>${log4j2.version}</version> 
    </dependency> 
</dependencies> 

的\ src \主\資源\ log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="TRACE"> 

    <Properties> 
     <Property name="filename">fileName</Property> 
    </Properties> 

    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="Pattern Pattern %d{DEFAULT} %-5level %t : %logger{1} - %m%n"/> 
     </Console> 
     <RollingFile name="RollingFile" 
        fileName="${filename}.log" 
        filePattern="${filename}-%d{yyyy-MM-dd}.log"> 
      <PatternLayout pattern="%d{DEFAULT} %-5level %t : %logger{1} - %m%n"/> 
      <TimeBasedTriggeringPolicy/> 
     </RollingFile> 
    </Appenders> 

    <Loggers> 
     <Logger name="com.mydomain" level="TRACE"/> 
     <Root level="TRACE"> 
      <AppenderRef ref="Console"/> 
      <AppenderRef ref="RollingFile"/> 
     </Root> 
    </Loggers> 
</Configuration> 

在任何類 - 例如A級

private static final Log logger = LogFactory.getLog(A.class); 

應用程序具有main()函數,因此可以由IDE或mvn exec:java運行。

問題:

記錄工作 - 但默認的方式。

正如你可以log4j2.xml文件中看到我改變水平TRACE和模式I型:Pattern Pattern檢查log4j2使用我的自定義配置。

logger.trace()出現。沒有文字Pattern Pattern。控制檯中沒有來自log4j的錯誤/警告。

請幫忙,告訴我我做錯了什麼?

編輯:

@BrunoMarcoVisioli告訴我使用org.apache.logging.log4j.LogManager,而不是LogFactory。所以,我在main()方法中添加新的記錄:

private static final Logger logger_new = LogManager.getLogger(CalculationApp.class); 

並通過這個logger_new登錄工作正常,所以我設置TRACE水平,我也看到了一些日誌,應用程序啓動時,第一:

Starting configuration XmlConfiguration[location=target\classes\log4j2.xml] 

但記錄通過LogFactory仍然不起作用。

+1

在應用程序的類路徑中是\ src \ main \ resources \? –

+0

@布魯諾Marco Visioli:是的。在那個目錄之前是一個log4j.properties文件,用於配置較舊的Log4j。而且,當我做'jar'文件log4j2。xml在裏面。這是否足夠證明? – jsosnowski

+0

如果可能的話,儘管可以使用'org.apache.logging.log4j.LogManager'而不是來自commons-logging的LogFactory,即使它可以工作。 –

回答

4

您需要將log4j-jcl依賴項添加到您的POM,它將作爲commons-logging和log4j2之間的橋樑。

-1

它通常與該文件所在的問題..

從文檔

默認的Log4j會在classpath中一個名爲log4j2.xml配置文件(沒有的log4j.xml)。

+0

我使用'log4j2.xml'。這包括在問題中。 – jsosnowski