org.apache.log4j與org.apache.commons.logging這兩個包有什麼區別

apache common logging是一種log的框架接口,它自己並不實現log記錄的功能,而是在運行時動態查找目前存在的日誌庫,調用相關的日誌函數,從而隱藏具體的日誌實現
log4j是具體的日誌實現,真正負責"寫"日誌的這個功能

common logging自己不是log,你能夠把它看作是一個日誌的接口
而log4j就是日誌的實現

使用common logging方式實現日誌,主要的緣由在於能夠忽略底層的日誌實現,或者說爲之後的日誌實現庫的更換提供透明界面
你能夠考慮下,假設從log4j更換爲logback,勢必要重寫全部本來使用log4j的源代碼,而使用common logging的狀況下,只須要更換jar包,而不須要對源代碼作任何改動apache

 

作日誌的時候通常是二者一塊兒用,commons-logging工做原理作接口,log4j作實現,應用起來比單獨的使用log4j要簡單

commons-logging工做原理:
1. 首先在classpath下尋找本身的配置文件commons-logging.properties,若是找到,則使用其中定義的Log實現類
2. 若是找不到commons-logging.properties文件,則在查找是否已定義系統環境變量org.apache.commons.logging.Log,找到則使用其定義的Log實現類
3. 查看classpath中是否有Log4j的包,若是發現,則自動使用Log4j做爲日誌實現類
4. 使用JDK自身的日誌實現類(JDK1.4之後纔有日誌實現類)
5. 使用commons-logging本身提供的一個簡單的日誌實現類SimpleLog
(以上順序不保證徹底準確,請參考官方文檔)
commons-logging老是能找到一個日誌實現類,而且儘量找到一個"最合適"的日誌實現類. 框架

相關文章
相關標籤/搜索