探索Java的日誌世界
探索Java的日誌世界
本文的思維導圖
一、主題
打開日誌的大門,探索的Java日誌世界
二、目標
- 了解常用的日誌框架
- 掌握日誌框架的選擇和使用以及開發規範
- 了解日誌框架中的一些設計思想
三、內容
1、日誌及日誌框架簡介
1.1 、日誌簡介
1.1.1 、 什麽是日誌?
1)基本字義是指工作日誌 ,詳細介紹一個過程和經歷的記錄。 日誌(漢語詞匯)
2)網絡設備、系統及服務程序等,在運作時都會產生一個叫log的事件記錄;每一行日誌都記載著日期、時間、使用者及動作等相關操作的描述。 日誌(計算機術語)
註: ==日誌可以是有價值的信息寶庫,也可以是毫無價值的數據泥潭==。
1.1.2. 、什麽是Java日誌?
Java日誌:Java應用程序在運行過程中記錄的一些數據信息。
如訪問的程序中某個接口的時間,請求參數、響應參數等等。
1.2、從System.out.println() 打開Java日誌的大門
public static void main(String[] args) {
System.out.println("hello sitech");
}
優點:
使用方便和簡單!
缺點:
- 只能輸出到控制臺,不能輸出到文件!
- 不能自定義全局的輸出格式!(日誌級別、日誌切割/自動歸檔、異步打印日誌等)
- 性能較低,如 println了 synchronized!
1.3、日誌框架的簡介
Java常用的日誌框架對比和深入分析
commons-logging和slf4j都只是一個日誌標準,並不是日誌系統的具體實現!
log4j,logback等等才是日誌的真正實現。
2、如何選擇及使用日誌框架
2.1、如何選擇?
接口選一個 、實現選一個實現,組合!
日誌門面/接口: SLF4J(即簡單日誌門面(Simple Logging Facade for Java) );
日誌實現:Logback;log4j
2.2、 如何使用?
2.2.1 、單一日誌框架通過slf4J使用 SLF4J user manual(用戶使用手冊)
註: 每個日誌框架的實現都有自己的配置文件。使用slf4j以後,配置文件還是框架自己本身的配置文件;
導入對應的jar
編寫相應實現的配置文件
使用slf4j編寫日誌代碼
2.2.2、 在復雜系統如何統一所有的日誌都統一到slf4J;legacy APIs
- 將系統中其他日誌框架先排除出去;
- 用中間包來替換原有的日誌框架;
- 我們導入slf4j其他的實現
2.3、例子
- 簡單實現slf4j + log4J
- 簡單實現slf4j + logback
- log4j-over-slf4j與slf4j-log4j12共存stack overflow異常分析
- 解決辦法
log4j-over-slf4j與slf4j-log4j12共存stack overflow異常分析
log4jDelegationLoop
3、 日誌開發規範
參考 阿裏巴巴Java開發手冊(終極版).pdf - 日誌規範
4、Slf4j使用到的設計模式
4.1 、設計模式
- 工廠模式
- 外觀模式 ( 門面模式)
- 橋接模式
- .....
4.2 、 源碼解析
四、 總結和討論
1、總結
本次分享是Java日誌的整體的介紹,其實日誌開發中還有很多的細節需要關註!
比如日誌的詳細使用:日誌配置文件編寫,日誌輸出的格式語法,日誌輸出的級別,日誌滾動策略等等
比如日誌的設計思想:設計模式、加載原理等等
本此分享只是一個拋磚引玉的過程,日誌的相關知識還是特別的多,希望後面大家可以分享出更精彩更深入的日誌知識和使用技巧。
2、討論
1、什麽情況下,哪些數據信息需要記錄日誌?
- 請求參數
- 返回參數
- 時間
- 服務器IP(分布式)
2、大家談一下實際日誌開發中一些經驗技巧?
- 分布日誌排查不方便 --統一日誌平臺(集中日誌收集)ELK
- 統一日誌平臺:對日誌格式有一定要求
- 日誌文件數據(服務調用日誌)
附錄
Asynchronous Loggers for Low-Latency Logging:性能對比
log4j2使用介紹
關於日誌記錄的一些感想
Java日誌框架:slf4j作用及其實現原理
如果您覺得這篇博文對你有幫助,請點贊或者喜歡,讓更多的人看到,謝謝!
如果帥氣(美麗)、睿智(聰穎),和我一樣簡單善良的你看到本篇博文中存在問題,請指出,我虛心接受你讓我成長的批評,謝謝閱讀!
祝你今天開心愉快!
歡迎訪問我的csdn博客,我們一同成長!
不管做什麽,只要堅持下去就會看到不一樣!在路上,不卑不亢!
博客首頁 : http://blog.csdn.net/u010648555
? 每天都在變得更好的阿飛
探索Java的日誌世界