Logback高階用法

2022-03-03 21:36:44 字數 1832 閱讀 1876

在日常的生產中,尤其是在微服務盛行的今天,我們的服務很可能是作為分布式應用上的乙個點,會接受來自不同客戶端的請求,那麼在服務的為每行日誌標記出來自的客戶端呢?本篇我們通過介紹logback的高階用法,來為大家實現。

日誌擴充套件

在分布式應用的今天,如何通過日誌把客戶端請求的不同應用的日誌串起來,展示呢

其實很簡單,就是為每個執行緒儲存點私有變數,這個私有變數的值,由我們自定義,用於區分不同的應用。

說到執行緒的私有變數,可能老程式猿,就想到這個類及threadlocal,關於個類的原始碼分析,小編已經寫過了,這裡就不解釋了,繼續… ,我們今天用到的這個mdc就是為每個執行緒請求儲存私有變數,然後在輸出日誌的時候列印出來,這樣就能標識出,每一行日誌的**。

logback框架已經為我們實現了一套常用的請求,今天我們就用,這個來演示。

mdcinsertingservletfilter

我們看一下該類的原始碼分析一下:

就是利用mdc為每個處理請求的執行緒新增上私有變數。就是如此,

不過我們要注意的是為了讓mdc中的資訊在任何時候都是正確有效的,我們需要在request被處理之前,就講相關資訊放入mdc,再在處理完後,clear掉。

大家看到其實這個類是繼承了filter就是乙個過濾器,在這裡小編用的是springboot實現的那麼如何使用呢?

/**

* @package: firebird.logger.config.filter

* @description: 應用配置

* @author: liuxin

* @date: 2017/8/29 下午5:32

*/@component

@bean

public filterregistrationbean filterregistrationbean()

}

該教程還是參考了我之前寫的日誌錯誤提醒框架,所以注釋部分包括了使用sentry的部分**,如果對錯誤收集框架感興趣的同學,可以看我的另一篇部落格

springboot整合sentry

/>

可以看到mdc_log_pattern中獲取了從mdc過濾器中的引數,這樣我們就能列印出來了

擴充套件方法如何實現呢? 不積跬步無以至千里,接下來還有要學習如何使用

Logback高階用法

在日常的生產中,尤其是在微服務盛行的今天,我們的服務很可能是作為分布式應用上的乙個點,會接受來自不同客戶端的請求,那麼在服務的為每行日誌標記出來自的客戶端呢?本篇我們通過介紹logback的高階用法,來為大家實現。在分布式應用的今天,如何通過日誌把客戶端請求的不同應用的日誌串起來,展示呢 其實很簡單...

日誌記錄原則以及logback高階用法

1 良好的日誌有助於快速定位問題,但是記錄日誌很容易臃腫膨脹,記錄無用資訊。2 良好的日誌,也是後續進行全鏈路跟蹤的分析介質。3 為自己工作,為自己的系統工作,做自己的老闆,形成正迴圈 打磨當前工作的核心關鍵能力 高效能工作 更多時間打磨自己的系統 更高效能工作 打磨下個層次工作的核心關鍵能力 4 ...

logback高階特性使用

非同步記錄日誌 注意 該功能需要高版本才能支援,如1.0.11。屬性名型別 描述queuesize intblockingqueue的最大容量,預設情況下,大小為256。discardingthreshold int預設情況下,當blockingqueue還有20 容量,他將丟棄trace debu...