知識鋪墊:在我們日常開發中,其實日志是和我們息息相關的。但可能平常都沒怎么注意到日志相關的知識點,也不怎么關注日志,然后,在生產環境中,日志是必不可少的存在,項目出現問題了都是通過日志來定位問題的。所以學習日志相關的知識點,對我們理解項目和搭建項目都是必不可少的存在。借用一句經典的話? ? "當你開始關注日志的時候,代表你已經不是菜鳥了"
開發中常見的日志類型
調試日志
軟件開發中,我們經常需要去調試程序,做一些信息,狀態的輸出便于我們查詢程序的運行狀況。為了 讓我們能夠更加靈活和方便的控制這些調試的信息,所有我們需要專業的日志技術。java中尋找bug會 需要重現。調試也就是debug 可以在程序運行中暫停程序運行,可以查看程序在運行中的情況。日志主 要是為了更方便的去重現問題。
簡單點說調試日志就是我們程序員自己添加的,用來測試項目的,比如使用system.out.println("測試")來輸出內容,測試項目,這就是調試日志。開發中隨處可見
系統日志
系統日志是記錄系統中硬件、軟件和系統問題的信息,同時還可以監視系統中發生的事件。用戶可以通 過它來檢查錯誤發生的原因,或者尋找受到攻擊時攻擊者留下的痕跡。系統日志包括系統日志、應用程序日志和安全日志。
簡單點說就是就是用于記錄系統信息的,比如一些框架的日志,其他依賴包內置的日志等。像我們運行spingboot項目是,那些輸出的日志信息就可以理解為系統日志
系統日志的價值
系統日志策略可以在故障剛剛發生時就向你發送警告信息,系統日志幫助你在最短的時間內發現問題。 系統日志是一種非常關鍵的組件,因為系統日志可以讓你充分了解自己的環境。這種系統日志信息對于 決定故障的根本原因或者縮小系統攻擊范圍來說是非常關鍵的,因為系統日志可以讓你了解故障或者襲 擊發生之前的所有事件。為虛擬化環境制定一套良好的系統日志策略也是至關重要的,因為系統日志需 要和許多不同的外部組件進行關聯。良好的系統日志可以防止你從錯誤的角度分析問題,避免浪費寶貴 的排錯時間。另外一種原因是借助于系統日志,管理員很有可能會發現一些之前從未意識到的問題,在 幾乎所有剛剛部署系統日志的環境當中。
日志文件
經過前面的介紹,大家應該都明白什么是日志和日志都有那些分類了吧。但有沒想過,目前的日志有些什么問題呢?? ?
答案: 沒有對日志進行持久化,沒有將日志內容保存起來
我們日常的練習都沒有將日志保存的習慣,當然日常練習也沒有必要保存日志。但在正式的項目開發中,將日志保存就很好必要的,因為當我們對項目進行打包部署后,一般就不對項目作修改了,程序會一直運行在服務器,這時候日志持久化的重要性就體現出來了
日志文件就是用于存儲日志的文件,一般來說日志文件都是純文本文件。
JAVA 日志框架
為什么要用日志框架
因為軟件系統發展到今天已經很復雜了,特別是服務器端軟件,涉及到的知識,內容,問題太多。在某 些方面使用別人成熟的框架,就相當于讓別人幫你完成一些基礎工作,你只需要集中精力完成系統的業 務邏輯設計 。而且框架一般是成熟,穩健的,他可以處理系統很多細節問題,比如,事務處理,安全 性,數據流控制等問題。還有框架一般都經過很多人使用,所以結構很好,所以擴展性也很好,而且它 是不斷升級的,你可以直接享受別人升級代碼帶來的好處。
現有的日志框架
JUL(java util logging)、logback、log4j、log4j2
JCL(Jakarta Commons Logging)、slf4j( Simple Logging Facade for Java)
日志門面
JCL、slf4j
日志實現
JUL、logback、log4j、log4j2
JUL是java內置的日志實現;log4j是一個獨立的日志框架,是很多年前的一個框架的,目前基本不使用的,只做了解即可。logback是參考log4j而重新實現的日志框架,目前spingboot的內置日志框架就是logback。log4j2是對log4j,性能上提升很大,性能比logback,目前大型的項目日志框架一般都會選擇log4j2。
日志門面簡單來說就是提供一個統一的接口,讓你去實現。目前slf4j是日常開發中的用得最多得日志門面。基于這個日志門面,項目可以根據自己得需要去切換到不同的日志實現框架。
到這里日志的基本介紹就完成了,后面會介紹日志具體的實現