可能我搜索了所有的互聯網,但我必須錯過一些東西。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
仍然不起作用。
在應用程序的類路徑中是\ src \ main \ resources \? –
@布魯諾Marco Visioli:是的。在那個目錄之前是一個log4j.properties文件,用於配置較舊的Log4j。而且,當我做'jar'文件log4j2。xml在裏面。這是否足夠證明? – jsosnowski
如果可能的話,儘管可以使用'org.apache.logging.log4j.LogManager'而不是來自commons-logging的LogFactory,即使它可以工作。 –