什麼是slf4j?
slf4j(simple logging facecade for java )充當各種日誌框架(例如java.util.logging,logback,log4j)的簡單外觀或抽象,允許最終用戶在部署時插入所需要的日誌框架。--譯自官網。
爲什麼使用slf4j?
假設你的項目已經使用log4j,而且你包含一個名爲A的庫,這個庫還依賴另外一個日誌記錄庫logback的,那麼你還需要包含它們。你再需要引入的一個名爲B的庫,這個庫依賴日誌記錄庫java.util.logging,你再把java.util.logging庫引入你的項目,以此下去成了災難。那麼該怎麼辦呢?
如果你引入的庫都是使用的slf4j,那麼你就不需要再維護另外的logback和java.util.logging。
那如果當你的項目被調用的時候,調用方還需維護log4j,這無疑給調用方又增加了維護成本。
在你的開源庫或者私有庫中使用SLF4J,可以使它獨立於任何的日誌實現,這就意味着不需要管理多個庫和多個日誌文件。
項目中如何使用?
比如項目使用log4j:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
注意:maven項目引入slf4j-log4j12會自動引入log4j.jar,無需再手動引入。
log4j.properties(僅做簡單示例,引入項目請根據需要修改)
log4j.rootLogger=debug, ServerDailyRollingFile, stdout
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.ServerDailyRollingFile.File=logs/notify-subscription.log
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n
log4j.appender.ServerDailyRollingFile.Append=true
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n
tips:slf4j1.8.0及以上(需要jdk1.8)版本不同,另做介紹。目前穩定的版本爲1.7.30
項目使用logback:
註釋掉slf4j-log4j12.jar,引入logback
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
如果沒有配置文件,logback會默認創建一個BasicConfigurator默認配置,將DEBUG級別及以上輸出到console。
其他日誌框架參考上面圖片!!!。
本文完。