slf4j-log4j12加log4j自定義配置包路徑日誌輸出

原項目依賴只引用了:

      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>${slf4j.version}</version>
      </dependency>

這麼一個關於日誌的包,項目也是正常的在跑,日誌也是看似正常的輸出,日誌一直是info級別,且只是簡單的配置了一下輸出到控制檯:

log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t] [%c]-[%p] %m%n

上面這個log4j.properties配置只是把項目中所有info級別的可見日誌輸出到控制檯,因爲用的tomcat也就是在catalina.out這個文件裏,並且項目沒有控制文件切割,如果服務器上也沒控制catalina.out文件切割那麼這個文件就會越來越大,等哪天真的有問題要查日誌了那文件估計大到打不開,不能給自己找那麻煩

最近在升級項目架構,支持多數據源切換,部署的時候發現log4j不能正常初始化,原因是有兩個同名類,一個在activemq-all包裏,一個在slf4j-log4j12包裏,總共提示了兩個錯:

1、log4j WARN No appenders could be found for logger, Please initialize the log4j system properly
2、Class path contains multiple SLF4J bindings,這裏提示是類是StaticLoggerBinder.class

第一個感覺這第一個錯是因爲第二個錯導致,所以解決先第二個,在mq依賴包中排除slf4j-log4j12的依賴就行了,但是我從依賴樹關係查看,activemq-all這個包裏只有一個slf4j-api的依賴包,沒有看到slf4j-log4j12,所以也就不可能會排除slf4j-log4j12,只能排除slf4j-api, 排除這個沒用啊,按照提示的StaticLoggerBinder類名查找mq裏的類,定位一下發現:slf4j-log4j12加log4j自定義配置包路徑日誌輸出
這個activemq-all包中包含了slf4j-log4j12同包內容,源碼直接打進去了,後來把activemq-all果斷換成activemq-client,這還沒完,這個第二個錯誤沒有了,但是出現了別的問題:

3、自定義包路徑日誌輸出兩遍

按照上面log4j配置文件,只有一個rootLogger,這樣會打印所有包路徑的日誌,spring,mq,dubbo,swagger。。。一堆日誌,這不是我想看到的,於是自定義包路徑,這個探索的過程比較漫長,就不廢話了,直接最終的結果,解決輸出兩邊的問題和上面第一個錯:

log4j.rootLogger=WARN,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t] [%c]-[%p] %m%n
#這裏配置是自定義的包路徑日誌級別,只要這些就行
log4j.logger.xxx.xxx.xxx=INFO
log4j.logger.xxx.xxx.xxx=ERROR
#下面註釋的這些是和上面rootLogger一起配置導致輸出兩遍,最終選擇註釋點這裏日誌正常
#log4j.appender.xxx=org.apache.log4j.ConsoleAppender
#log4j.appender.xxx.layout=org.apache.log4j.PatternLayout
#log4j.appender.xxx.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t] [%c]-[%p] %m%n

我這裏沒有配置輸出到文件,切割,因爲做了catalina.out切割輸出,看這一個文件就夠了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章