亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java日志怎么理解

發布時間:2021-11-24 16:17:47 來源:億速云 閱讀:174 作者:iii 欄目:大數據

這篇文章主要介紹“java日志怎么理解”,在日常操作中,相信很多人在java日志怎么理解問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java日志怎么理解”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

重要性

“無日志,不運維”。重要指數:最高級。

具備的特性

能快速、精準定位問題,日志要能顯示出錯誤的原因。這句話非常重要,這是日志打印的指導思想。

分類

分類很重要,不同的功能,不同的業務需要不同的日志。分類越詳細,越便于問題的定位。

日志的類型

從打印的日志類型進行劃分,可以分為:控制臺日志、文件日志、數據庫日志、kafka+elk日志。這些是我目前接觸過的。

控制臺日志:用于簡單代碼的測試

文件日志、數據庫日志:我是不推薦使用的,已經out了

kafka+elk日志:我目前接觸最好的日志

@timestamp:是日志打印的時間

level:是日志的級別

loggerName:是創建logger時,傳的class參數

message:是打印的日志

projectMarker:是我添加的,用于區分項目和環境的。通過本截圖可以看出,此條日志是seal項目的正式環境日志。如果是“seal.test”表示是seal的測試環境。此功能只有我開發的框架“聚寶盆”才有。

source.class:是打印日志的類的全名稱

source.line:是打印日志在類中的行號

source.method:是打印日志的方法名

級別

日志輸出的優先級: debug < info < warn < error < fatal,info、warn、error是必須用到的。

info:正常信息的打印,為了方便排錯、調試。

warn:可以忽略的錯誤。比如密碼錯誤、session過期等。

error:不允許的錯誤。此錯誤會導致正常業務的進行。

層級

個人認為日志應該分為框架層級、業務層級、插件層級幾個方面。

框架層級:項目使用的框架打印的日志。這類日志是為了從底層排查問題使用的(如果業務層不能排查)。一般是架構師搭建的。此類層級的日志非常重要,因為框架級別的日志具有普遍性、通用性等特點,框架打印了日志,業務層就不需要在寫日志了,減少了業務開發的工作量。有的問題,需要底層的日志才能定位。

業務層級:主要打印業務相關的日志

插件層級:由于和第三方對接,需要引入第三方的jar等,抓取到的插件的日志。

返回碼、描述、標準化

返回碼:一般是三位數字,只能表示一個范圍,不能精準定位問題

描述:是返回的描述信息,可以精準定位問題。但是現在有個錯誤的使用,這個描述本來是為了方便后端工程師定位問題的,前端工程師在做問題展示的時候,直接使用了,由于排查問題的描述和展示給客戶的描述是不一樣的,導致此描述不能精準定位問題了。如果需要使用后端的信息做展示,建議另創建個字段

標準化:這個非常重要,如果進行標準化處理,大家一眼就能判斷問題出在哪里了。

下面這段代碼是“聚寶盆”框架返回的標準屬性,可供參考

@ApiModelProperty(value="返回碼,200成功,其他為失敗。頁面通過返回碼處理不同的業務")
private int returnCode = 200;
@ApiModelProperty(value="錯誤信息,此信息只能用于接口對接,排查錯誤,不能用于頁面展示")
private String returnDesc = "成功";
@ApiModelProperty(value="前端顯示的信息")
private String returnShow;

運行時間

運行時間的打印,是進行性能調優的一個非常重要的日志。因為太重要了,所以單列一個標題

日志的記錄

如果能夠理解日志打印的指導思想,我相信日志打印對你來說不是一件難事。

必須打印的日志

接口的入口處和返回處:入口需要打印傳入的參數,返回處需要打印返回的信息。

調用接口的前后:調用接口前要打印請求的參數,調用接口后要打印請求的參數、返回的值,還要打印接口運行的時間。

錯誤的分支:每個異常的分支,都必須打印日志。if必須有slse,switch必須有default。見下圖所示

/////////例子1/////////
if(){
//正常業務邏輯
}else{
//異常,此處必須有日志
}
////////例子2/////////
if(){
//異常,此處必須有日志
}
//正常業務邏輯
/////////////例子3/////////
switch (key) {
case value:
	//正常業務邏輯
	break;
...//正常業務邏輯
default:
    //異常,此處必須有日志
	break;
}

catch:如果程序異常了,必須捕獲并打印日志

數據庫:操作數據庫的日志必須打印,包括執行的語句和傳入的參數

可能出錯的語句前面:如果執行的語句有報錯的概率,一定要在前面打印入參,方便排錯。

可選的日志

個人認為如果必須打印的日志都打印了,就完全可以滿足排錯的需要了。

到此,關于“java日志怎么理解”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永定县| 灯塔市| 建湖县| 祁门县| 塔河县| 庆安县| 阿克| 涪陵区| 陆河县| 怀远县| 时尚| 许昌市| 宁河县| 汝州市| 金塔县| 化德县| 兴化市| 新津县| 五指山市| 烟台市| 井冈山市| 姚安县| 自贡市| 双流县| 莒南县| 桐庐县| 三河市| 昂仁县| 康马县| 莱西市| 库尔勒市| 通海县| 荥阳市| 长春市| 黔西| 永兴县| 航空| 华蓥市| 湖州市| 彰化市| 无锡市|