2017-08-02 90 views
0

我正在從log4j 1.2遷移到log4j 2.log4j:WARN記錄器沒有找到appender(org.springframework.web.filter.CharacterEncodingFilter)。與log4j2

我有我的整個配置到一個log4j2.properties文件。

我注意到,我在日誌中有一個新的錯誤消息,在啓動tomcat的我:

的log4j:警告沒有附加目的地可以爲記錄器(org.springframework.web.filter.CharacterEncodingFilter)中找到。 log4j:WARN請正確初始化log4j系統。 log4j:WARN有關更多信息,請參閱http://logging.apache.org/log4j/1.2/faq.html#noconfig

我已使用我以前的日誌進行過驗證,並且以前沒有此警告。

這裏是我以前的配置(在log4j.properties文件):

log4j.rootLogger=INFO, CONSOLE 

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%d{dd-MM HH:mm:ss} %p %t %c - %m%n 
log4j.logger.com.example=DEBUG 
log4j.logger.org.springframework=INFO 

這裏是新的(在log4j2.properties):

appender.console.type = Console 
appender.console.name = ConsoleAppender 
appender.console.layout.type = PatternLayout 
appender.console.layout.pattern = %d %p %t %c - %m%n 

loggers = log1, log2 

logger.log1.name = org.springframework 
logger.log1.level = INFO 
logger.log1.appenderRef = ConsoleAppender 

logger.log2.name = com.example 
logger.log2.level = DEBUG 
logger.log2.appenderRef = ConsoleAppender 

rootLogger.level = ERROR 
rootLogger.appenderRef.stdout.ref = ConsoleAppender 

所以,我所瞭解迄今:

  • 我創建類型控制檯的一個附加器,命名是ConsoleAppender,
  • 我創建了兩個記錄儀是去到每一個是ConsoleAppender,一個在org.springframework(水平INFO)和其他有關com。示例(級別INFO)

我用this page,試圖瞭解如何做遷移。

您是否看到有關爲什麼我應該收到此特定消息的任何解釋?

+0

您是否嘗試指定配置文件位置?我認爲這個錯誤意味着Log4j沒有找到它:https://logging.apache.org/log4j/2.0/faq.html#config_location – xuso

+0

似乎沒有必要指定它,因爲log4j2.properties被自動找到(因爲log4j.properties在以前的版本中自動找到) –

+0

再次讀取日誌消息,我注意到1.2版本沒有找到它的配置,而是2.4版本。也許舊的1.2 jar仍然在你的類路徑中? – xuso

回答

0

this answer看出,問題可能是由於這樣的事實,我也使用SLF4J-log4j12(但已經是最新版本),這是與其他的log4j的API衝突:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.25</version> 
</dependency> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.7.25</version> 
</dependency> 

所以我做了什麼告訴我刪除org.slf4j:SLF4J-log4j12扶養和添加的log4j的API &的log4j-SLF4J-IMPL依賴關係:

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-core</artifactId> 
    <version>2.8.2</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-api</artifactId> 
    <version>2.8.2</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-slf4j-impl</artifactId> 
    <version>2.8.2</version> 
</dependency> 

...並知道它似乎解決這個錯誤(它不會再出現在我的起始日誌中)

爲了更清楚起見,我首先只添加了上面三個依賴關係,但沒有刪除slf4j-log4j12,我也將它記錄到日誌中:

SLF4J:見於 結合[JAR:文件:/myuser/apache-tomcat-7.0.75/webapps/mywebapp/WEB-INF/lib/log4j-slf4j-impl-2.8.2.jar/org/slf4j/impl/StaticLoggerBinder.class] SLF4J:在[jar:file:/myuser/apache-tomcat-7.0.75/webapps/mywebapp/WEB-INF/lib/slf4j-log4j12-1.7.25中找到綁定。罐子!/組織/ SLF4J/IMPL/StaticLoggerBinder。類]

刪除slf4j-log4j12依賴性後,整個錯誤日誌消失。

相關問題