我正在使用Tomcat 6並嘗試將JUL切換到Log4j2(2.0 beta 3)。但是,由於這是一個相當新的項目,文檔相當稀少,網上的資源也不多。Tomcat中的Log4j2
我想
- 上述調試級別的所有事件應該到磁盤上的文件是什麼。
- 錯誤應該去
syserr
。 - 從信息到警告的一切應該去
sysout
。 - Marked審計日誌應該跳過所有這些並轉到磁盤上的其他文件。
我試了一下
這是我第一次嘗試log4j2.xml
文件:
我應該寫什麼在configuration status
?關於它的一些文件在哪裏?
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="info">
<appenders>
<Console name="Console-err" target="SYSTEM_ERR">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<Console name="Console-out" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="MyFile" fileName="app.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</appenders>
<loggers>
<logger name="com.ecm" level="error" additivity="false">
<appender-ref ref="Console-err" />
<appender-ref ref="MyFile" />
</logger>
<root level="info">
<appender-ref ref="Console-out" />
<appender-ref ref="MyFile" />
</root>
</loggers>
</configuration>
如何記錄器名稱涉及到Java類和它們的記錄器?
示例代碼:
package com.ecm.backend;
public final class Foo {
private static final Logger LOG = LogManager.getLogger(Foo.class);
public static void bar() {
LOG.error("this is error");
LOG.warn("this is warning");
}
}
當我運行它,我得到這個在控制檯和日誌文件:
10:22:49.385 [http-8080-3] ERROR com.ecm.backend.Foo - this is error
爲什麼警告忽略?
如果我刪除了additivity="false"
,我得到:
10:26:51.388 [http-8080-1] ERROR com.ecm.backend.Foo - this is error
10:26:51.388 [http-8080-1] ERROR com.ecm.backend.Foo - this is error
警告再次忽略重複錯誤(如預期)。
我在做什麼錯?
下折:Tomcat的休息可以用巨力,我只是想Log4j2我的應用程序。
謝謝!自12月以來,我設法配置它就好了,現在我是一個快樂的用戶;)(我應該回答我的問題在這裏的答案..) – vektor
Vektor,我喜歡你的問題。我正在考慮在log4j2網站上添加一個FAQ頁面,其中包含像您這樣的問題。 –