瘋狂的java
          好的藝術家復制,偉大的藝術家偷竊!
          posts - 3,  comments - 4,  trackbacks - 0

          幾乎在每個jar包里都可以看到log4j的身影,在多個子工程構成項目中,slf4j相關的沖突時不時就跳出來讓你不爽,那么slf4j-api、slf4j-log4j12還有log4j他們是什么關系?我把自己了解的和大家簡單分享一下:

              slf4j:Simple Logging Facade for Java,為java提供的簡單日志Facade。Facade:門面,更底層一點說就是接口。他允許用戶以自己的喜好,在工程中通過slf4j接入不同的日志系統。更直觀一點,slf4j是個數據線,一端嵌入程序,另一端鏈接日志系統,從而實現將程序中的信息導入到日志系統并記錄。 

             因此,slf4j入口就是眾多接口的集合,他不負責具體的日志實現,只在編譯時負責尋找合適的日志系統進行綁定。具體有哪些接口,全部都定義在slf4j-api中。查看slf4j-api源碼就可以發現,里面除了public final class LoggerFactory類之外,都是接口定義。因此,slf4j-api本質就是一個接口定義。

                

          下圖比較清晰的描述了他們之間的關系:


             

               


            當系統采用log4j作為日志框架實現的調用關系:

              

              首先系統包含slf4j-api作為日志接入的接口;

              

              at compile時slf4j-api中public final class LoggerFactor類中

              private final static void bind() 方法會尋找具體的日志實現類綁定,主要通過
              
          StaticLoggerBinder.getSingleton();語句調用

              

            

             slf4j-log4j12:鏈接slf4j-api和log4j中間的適配器。它實現了slf4j-apiz中StaticLoggerBinder接口,從而使得在編譯時綁定的是slf4j-log4j12的getSingleton()方法

          log4j:這個是具體的日志系統。通過slf4j-log4j12初始化Log4j,達到最終日志的輸出。

          posted on 2014-04-13 09:17 永志歌德 閱讀(632) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2014年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          收藏夾

          我的博客

          牛人博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 双柏县| 海口市| 康平县| 炉霍县| 资阳市| 松潘县| 来安县| 株洲市| 德令哈市| 竹溪县| 吴川市| 桑日县| 乌鲁木齐县| 慈溪市| 万载县| 东阿县| 蓬莱市| 阿拉善右旗| 山阴县| 鄂伦春自治旗| 苏尼特右旗| 铜陵市| 关岭| 泾阳县| 太康县| 教育| 易门县| 盐城市| 吉木乃县| 夹江县| 广灵县| 上思县| 永年县| 滨州市| 台中县| 台南市| 普陀区| 五河县| 海南省| 陆丰市| 安多县|