成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

手寫了個小中間件,開源啦

開源
通過日志進(jìn)行業(yè)務(wù)關(guān)鍵邏輯的輸出,是定位問題的有效手段之一。但是,過多的日志記錄又會對系統(tǒng)造成額外的開銷,極端情況下,甚至可能導(dǎo)致系統(tǒng)宕機(jī)。

項目名稱:LogLevelSwitch(運行時動態(tài)日志等級開關(guān))。

項目地址,走過路過可以點個star :)

https://github.com/saigu/LogLevelSwitch。

1、為什么需要LogLevelSwitch

隨著業(yè)務(wù)規(guī)模不斷擴(kuò)大,每一次線上故障的快速定位都是對開發(fā)同學(xué)的巨大挑戰(zhàn)。

通過日志進(jìn)行業(yè)務(wù)關(guān)鍵邏輯的輸出,是定位問題的有效手段之一。但是,過多的日志記錄又會對系統(tǒng)造成額外的開銷,極端情況下,甚至可能導(dǎo)致系統(tǒng)宕機(jī)。

因此,為了兼顧性能和故障場景下的快速定位,我們需要能夠?qū)崟r調(diào)整日志等級,以便輸出更多的日志信息排查線上問題,或是減少日志打印帶來的性能消耗。

基于以上背景,我們的LogLevelSwitch誕生了。

LogLevleSwitch以中間件的形式嵌入應(yīng)用,基于配置中心的熱更新能力,實現(xiàn)了應(yīng)用運行時動態(tài)調(diào)整日志等級的能力。

2、功能特性

兼容性:支持Log4j、Log4j2、Logback等。

擴(kuò)展性:可以使用默認(rèn)的基于本地配置文件的配置修改方式(僅供本地測試學(xué)習(xí)使用)。生產(chǎn)上,「強(qiáng)烈推薦」 通過SPI接入你自己的配置中心,實現(xiàn)熱更新。

易用性:接入簡單,效果拔群,只要5分鐘你就能用上。

3、基本架構(gòu)

在應(yīng)用Application中引入我們的LogLevelSwitch。

LogLevelSwitch包含兩個核心組件,LogContext和SwitchContext。

  • SwitchContext: 保存從配置中心獲取的switch開關(guān)狀態(tài)與具體Logger配置信息。通過監(jiān)聽配置中心消息,實時更新switch內(nèi)容,并實現(xiàn)對Logger等級的修改通知。
  • LogContext:保存應(yīng)用原始的Logger與日志級別信息,并能夠根據(jù)switch配置 更新 或 復(fù)原 Logger的等級。

4、Quick Start

話不多說了,快來嘗嘗鮮吧。

(1) 普通spring項目

只用三步即可完成。

STEP 1: 應(yīng)用中pom引入依賴。

<dependency>
<groupId>io.github.saigu</groupId>
<artifactId>log-switch-core</artifactId>
<version>1.0.0-beta</version>
</dependency>

STEP 2: 構(gòu)建config Bean。

@Configuration
public class LogLevelSwitchConfig {
@Bean
LogLevelSwitch logLevelSwitch() {
return new LogLevelSwitch();
}
}

STEP 3: 接入配置中心。

聲明配置中心的SPI實現(xiàn)。

  • 在resource路徑下新建 META-INF/services,創(chuàng)建文件名為
  • io.github.saigu.log.level.sw.listener.ConfigListener的文件,并寫入需要的「實現(xiàn)類名」。

實現(xiàn)一:項目自帶的LocalFile配置中心。

如果你還沒有自己的配置中心,那就使用我們自帶的基于本地配置文件進(jìn)行本地測試學(xué)習(xí)。

「實現(xiàn)類名」為:

io.github.saigu.log.level.sw.listener.LocalFileListener

注意,生產(chǎn)上 強(qiáng)烈推薦 通過「實現(xiàn)二」接入你自己的配置中心,實現(xiàn)熱更新。

在resource目錄下新建LocalSwitch.json文件:

然后填寫開關(guān)配置:

{
"status": "on",
"loggerBeans": [
{
"name": "all",
"level": "error"
}
]
}

實現(xiàn)二:自定義SPI擴(kuò)展配置,接入自己的配置中心。

如果你已經(jīng)有了自己的配置中心,那就可以通過SPI擴(kuò)展配置,接入自己的配置中心。

「實現(xiàn)類名」為你自己的實現(xiàn)類名。

(2) Springboot項目

兩步接入。

STEP 1: 應(yīng)用中pom引入依賴。

<dependency>
<groupId>io.github.saigu</groupId>
<artifactId>log-switch-starter</artifactId>
<version>1.0.0-beta</version>
</dependency>

STEP 2: 接入配置中心。

同「方式一」。

5、關(guān)鍵配置

SwitchContext是我們的關(guān)鍵配置:

參考范例:

{
"status": "on",
"loggerBeans": [
{
"name": "all",
"level": "error"
}
]
}

6、注意事項

為了規(guī)范日志使用,同時避免影響降級開關(guān)效果,初始化的時候會去檢測項目中依賴的日志框架實現(xiàn)。

請注意,如果日志提示

“存在多個日志框架實現(xiàn),建議只保留一個,否則會影響日志降級開關(guān)效果”

說明檢測到了應(yīng)用中引入了多個日志框架實現(xiàn)。

建議從pom中進(jìn)行移除多余日志框架,確保采用唯一日志框架實現(xiàn)。

責(zé)任編輯:姜華 來源: 阿丸筆記
相關(guān)推薦

2011-10-28 09:20:36

dorado

2022-08-09 08:31:29

RocketMQ消息中間件

2011-10-24 07:41:38

SOA中間件應(yīng)用服務(wù)器

2021-09-09 09:05:30

開源字節(jié)跳動CloudWeGo

2025-06-12 08:34:48

云原生開源中間件

2011-05-24 15:10:48

2021-02-11 08:21:02

中間件開發(fā)CRUD

2013-05-17 15:08:19

紅帽

2016-11-11 21:00:46

中間件

2013-05-17 17:01:32

紅帽OpenShifPaaS云

2019-12-13 10:32:56

開源消息中間件

2018-02-01 10:19:22

中間件服務(wù)器系統(tǒng)

2018-07-29 12:27:30

云中間件云計算API

2012-11-30 10:21:46

移動中間件

2009-06-16 15:55:06

JBoss企業(yè)中間件

2023-10-24 07:50:18

消息中間件MQ

2023-06-29 10:10:06

Rocket MQ消息中間件

2013-03-27 10:04:21

云計算開源中間件

2013-03-27 10:11:23

云計算紅帽

2024-06-12 13:40:58

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: www日韩| 久久91av| 国产精品久久久久久久久免费丝袜 | 免费久久精品视频 | dy天堂| 伊人伊人| 欧美一级免费黄色片 | 少妇性l交大片免费一 | 伊人看片| 国产精品亚洲第一区在线暖暖韩国 | 日韩在线中文字幕 | 日韩 欧美 综合 | 国产最新视频在线 | 亚州激情| 国产成人一区二区 | 一区免费观看 | 国产精品一区二区三区四区 | 91麻豆精品国产91久久久久久 | 国产黄色免费网站 | h片在线播放 | 国产成人av电影 | 中文字幕精品一区 | 国产激情免费视频 | 可以免费看的毛片 | 成人久久视频 | 蜜月aⅴ国产精品 | 亚洲精品一区二区冲田杏梨 | 国产精品毛片av一区 | 日韩在线精品视频 | 日韩精品999 | 精品一区二区电影 | 国产精品特级片 | 在线看av的网址 | 国产精品久久久久久久久久不蜜臀 | 高清欧美性猛交xxxx黑人猛交 | 成人综合视频在线 | 男人天堂网站 | 欧美精品久久久 | 久久av资源网 | 国产成人一区二区三区 | 中文字幕高清在线 |