Java日誌框架-slf4j

什麼是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。

其他日誌框架參考上面圖片!!!。

本文完。

 

 

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