2014-01-24 171 views
4

我在基於tomcat的web應用程序中使用Logback和SLF4J。我沒有使用任何logback.xml文件。一切都以編程方式完成。但是,不時我得到了以下錯誤消息:Logback和SLF4J編程配置

java.lang.ClassCastException: org.slf4j.helpers.SubstituteLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext. 

和這個代碼的部分拋出該異常:

LoggerContext logCtx = (LoggerContext) LoggerFactory 
       .getILoggerFactory(); 

我想知道我是否做錯了什麼或不。請協助。

回答

4

據我所知,這是由SLF4J在支持日誌記錄實現尚未初始化時使用中間工廠引起的。如果您首先要求記錄器LoggerFactory,例如根記錄器,這將啓動Logback,之後你的代碼應該得到合適的LoggerContext。我遇到這種情況是因爲我的記錄器在第一次訪問時被懶惰地創建,並且只有在我嘗試檢索LoggerContext之後,第一個日誌語句纔出現。在類中檢索LoggerContext的類中具有通常的private static final Logger = LoggerFactory.getLogger("...")行也具有相同的效果,儘管連接並不明顯。