最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的logback自定義日志脫敏組件詳解

 更新時(shí)間:2023年11月06日 09:34:47   作者:LOOPY_Y  
這篇文章主要介紹了Java的logback自定義日志脫敏組件詳解,一個(gè)項(xiàng)目在書(shū)寫(xiě)了很多打印日志的代碼,但是后面有了脫敏需求,如果我們?nèi)ナ謩?dòng)改動(dòng)代碼,會(huì)花費(fèi)大量時(shí)間,如果引入本組件,完成配置即可輕松完成脫敏,需要的朋友可以參考下

前言

在我們寫(xiě)代碼的時(shí)候,會(huì)書(shū)寫(xiě)許多日志代碼,但是有些敏感數(shù)據(jù)是需要進(jìn)行安全脫敏處理的。

對(duì)于日志脫敏的方式有很多,常見(jiàn)的有: ①使用conversionRule標(biāo)簽,繼承MessageConverter ②書(shū)寫(xiě)一個(gè)脫敏工具類(lèi),在打印日志的時(shí)候?qū)μ囟ㄌ刈侄芜M(jìn)行脫敏返回。

兩種方式各有優(yōu)缺點(diǎn):第一種方式需要修改代碼,不符合開(kāi)閉原則。第二種方式,需要在日志方法的參數(shù)進(jìn)行脫敏,對(duì)原生日志有入侵行為。

一個(gè)項(xiàng)目在書(shū)寫(xiě)了很多打印日志的代碼,但是后面有了脫敏需求,如果我們?nèi)ナ謩?dòng)改動(dòng)代碼,會(huì)花費(fèi)大量時(shí)間。如果引入本組件,完成配置即可輕松完成脫敏。(僅需三步可輕松配置。

脫敏效果演示

在這里插入圖片描述

在這里插入圖片描述

使用方式

1、引入Jar包依賴(lài)

前提是你將Jar包打入本地倉(cāng)庫(kù),Jar包地址見(jiàn)后文。

<dependency>
    <groupId>pers.liuchengyin</groupId>
    <artifactId>logback-desensitization</artifactId>
    <version>1.0.0</version>
</dependency>

2、替換日志文件配置類(lèi)(logback.xml)

日志打印方式都只需要替換成脫敏的類(lèi)即可,如果你的業(yè)務(wù)不需要,則無(wú)需替換。

①ConsoleAppender - 控制臺(tái)脫敏

// 原類(lèi)
ch.qos.logback.core.ConsoleAppender
// 替換類(lèi)
pers.liuchengyin.logbackadvice.LcyConsoleAppender

②RollingFileAppender - 滾動(dòng)文件

// 原類(lèi)
ch.qos.logback.core.rolling.RollingFileAppender
// 替換類(lèi)
pers.liuchengyin.logbackadvice.LcyRollingFileAppender

③FileAppender - 文件

// 原類(lèi)
ch.qos.logback.core.rolling.RollingFileAppender
// 替換類(lèi)
pers.liuchengyin.logbackadvice.LcyRollingFileAppender

替換示例:

<property name="CONSOLE_LOG_PATTERN"
          value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>

<!-- ConsoleAppender 控制臺(tái)輸出日志 -->
<appender name="CONSOLE" class="pers.liuchengyin.logbackadvice.LcyConsoleAppender">
    <encoder>
        <pattern>
            ${CONSOLE_LOG_PATTERN}
        </pattern>
    </encoder>
</appender>

3、添加脫敏配置文件(logback-desensitize.yml)

該配置文件應(yīng)該放在resources文件下

在這里插入圖片描述

脫敏規(guī)范

1、支持?jǐn)?shù)據(jù)類(lèi)型

八大基本類(lèi)型及其包裝類(lèi)型、Map、List、業(yè)務(wù)里的Pojo對(duì)象、List<業(yè)務(wù)里的Pojo對(duì)象>、JSON字符串。

注:在配置文件中配置的時(shí)候,只需要配置對(duì)象里的屬性值就行。

2、不支持的數(shù)據(jù)類(lèi)型

List<八大基本類(lèi)型及包裝類(lèi)型>,因?yàn)椴恢烂撁舻臄?shù)據(jù)源具體是哪一個(gè)。

3、匹配規(guī)則

key + 分割符 + value,目前僅支持冒號(hào)(:)和等號(hào)(=),示例如下:

log.info("your email:{}, your phone:{}", "123456789@qq.com","15310763497");
log.info("your email={}, your cellphone={}", "123456789@qq.com","15310763497");

key:定義了對(duì)應(yīng)需要脫敏的關(guān)鍵字,如上訴的email、phone等以及業(yè)務(wù)對(duì)象中的字段、Map中的Key、JSON中的Keyvalue:需要脫敏的值,如上訴的123456789@qq.com、15310763497。

4、日志規(guī)范

建議書(shū)寫(xiě)日志的時(shí)候盡量規(guī)范,對(duì)于key為中文的是沒(méi)有辦法脫敏的,規(guī)范程度可以見(jiàn)脫敏效果演示里的代碼。

logback-desensitize.yml配置說(shuō)明

# 日志脫敏
log-desensitize:
  # 是否忽略大小寫(xiě)匹配,默認(rèn)為true
  ignore: true
  # 是否開(kāi)啟脫敏,默認(rèn)為false
  open: true
  # pattern下的key/value為固定脫敏規(guī)則
  pattern:
    # 郵箱 - @前第4-7位脫敏
    email: "@>(4,7)"
    # qq郵箱 - @后1-3位脫敏
    qqemail: "@<(1,3)"
    # 姓名 - 姓脫敏,如*杰倫
    name: 1,1
    # 密碼 - 所有需要完全脫敏的都可以使用內(nèi)置的password
    password: password
  patterns:
    # 身份證號(hào),key后面的字段都可以匹配以下規(guī)則(用逗號(hào)分隔)
    - key: identity,idcard
      # 定義規(guī)則的標(biāo)識(shí)
      custom:
        # defaultRegex表示使用組件內(nèi)置的規(guī)則:identity表示身份證號(hào) - 內(nèi)置的18/15位
        - defaultRegex: identity
          position: 9,13
        # 內(nèi)置的other表示如果其他規(guī)則都無(wú)法匹配到,則按該規(guī)則處理
        - defaultRegex: other
          position: 9,10
    # 電話號(hào)碼,key后面的字段都可以匹配以下規(guī)則(用逗號(hào)分隔)
    - key: phone,cellphone,mobile
      custom:
        # 手機(jī)號(hào) - 內(nèi)置的11位手機(jī)匹配規(guī)則
        - defaultRegex: phone
          position: 4,7
        # 自定義正則匹配表達(dá)式:座機(jī)號(hào)(帶區(qū)號(hào),號(hào)碼七位|八位)
        - customRegex: "^0[0-9]{2,3}-[0-9]{7,8}"
        # -后面的1-4位脫敏
          position: "-<(1,4)"
        # 自定義正則匹配表達(dá)式:座機(jī)號(hào)(不帶區(qū)號(hào))
        - customRegex: "^[0-9]{7,8}"
          position: 3,5
        # 內(nèi)置的other表示如果其他規(guī)則都無(wú)法匹配到,則按該規(guī)則處理
        - defaultRegex: other
          position: 1,3
    # 這種方式不太推薦 - 一旦匹配不上,就不會(huì)脫敏
    - key: localMobile
      custom:
          customRegex: "^0[0-9]{2,3}-[0-9]{7,8}"
          position: 1,3

上面這個(gè)配置是相對(duì)完整的,一定要嚴(yán)格遵守層級(jí)配置格式。

自定義脫敏支持的方式

1、key:value的方式

  • phone:4,7,表示phone屬性的4-7位進(jìn)行脫敏
  • 原始數(shù)據(jù):13610357861
  • 脫敏后:136****7861

2、以符號(hào)作為起始、結(jié)束節(jié)點(diǎn)作為脫敏標(biāo)志

  • emai:“@>(4,7)”,@為脫敏標(biāo)志,>表示其為結(jié)束節(jié)點(diǎn),<表示其為開(kāi)始節(jié)點(diǎn)。即@>表示對(duì)@之前的進(jìn)行脫敏,@<表示對(duì)@之后的進(jìn)行脫敏。這個(gè)示例就是@前的數(shù)據(jù)的第4-7位進(jìn)行脫敏。

注意:這種規(guī)則里的雙引號(hào)、括號(hào)不能省略,其次:和=不能作為標(biāo)志符號(hào),因?yàn)楹推ヅ湟?guī)則有沖突

  • 原始數(shù)據(jù):123456789@qq.com
  • "@>(4,7)"脫敏后:123****89@qq.com
  • "@<(1,3)"脫敏后:123456789@***com

3、自定義正則脫敏

patterns:
  # 手機(jī)號(hào)
  - key: phone,mobile
    custom:
      # 手機(jī)號(hào)的正則
      - customRegex: "^1[0-9]{10}"
        # 脫敏范圍
        position: 4,7

customRegex:正則表達(dá)式,如果符合該表達(dá)式,則使用其對(duì)應(yīng)的脫敏規(guī)則(position)

4、一個(gè)字段,根據(jù)多種值含義進(jìn)行自定義脫敏

比如說(shuō),username字段的值可以是手機(jī)號(hào)、也可以是郵箱,這個(gè)值動(dòng)態(tài)改變的,前面幾種方式都沒(méi)辦法解決,可以使用該方式。

patterns:
  - key: username
    custom:
      # 手機(jī)號(hào) - 11位
      - defaultRegex: phone
        position : 4,7
      # 郵箱 - @
   - defaultRegex: email
     position : "@>(3,12)"
   # 身份證 - 15/18位
   - defaultRegex: identity
     position : 1,3
   # 自定義正則
   - customRegex: "^1[0-9]{10}"
     position : 1,3
   # 都匹配不到時(shí),按照這種規(guī)則來(lái)
   - defaultRegex: other
     position : 1,3

注意:上面示例中匹配規(guī)則里的 雙引號(hào)和括號(hào) 都不能省略

該組件內(nèi)置四種匹配規(guī)則:手機(jī)號(hào)、身份證號(hào)、郵箱、other(其他匹配不到時(shí)用的),內(nèi)置一種脫敏方式:password,表示完全脫敏,可用于pattren下的。

注:當(dāng)pattern和patterns下的key有重復(fù)的時(shí)候,只會(huì)使用pattern下指定的方式進(jìn)行脫敏。

Jar包打入Maven本地倉(cāng)庫(kù)的方式

1、下載Jar包,放在一個(gè)文件夾里

2、在這個(gè)文件夾里打開(kāi)cmd(打開(kāi)cmd,進(jìn)入到這個(gè)文件夾)

3、執(zhí)行命令(前提保證maven配置正常,使用mvn -v命令查看是否正常,如果顯示版本號(hào)表示正常)

mvn install:install-file -DgroupId=pers.liuchengyin -DartifactId=logback-desensitization -Dversion=1.0.0 -Dpackaging=jar -Dfile=logback-desensitization-1.0.0.jar

命令說(shuō)明:

-DgroupId
 表示jar對(duì)應(yīng)的groupId  
 <groupId>pers.liuchengyin</groupId>
-DartifactId:
 表示jar對(duì)應(yīng)的artifactId
 <artifactId>logback-desensitization</artifactId>
-Dversion
 表示jar對(duì)應(yīng)的 version
 <version>1.0.0</version>

到此這篇關(guān)于Java的logback自定義日志脫敏組件詳解的文章就介紹到這了,更多相關(guān)logback自定義日志脫敏組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng)

    Java實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 詳解基于java的Socket聊天程序——服務(wù)端(附demo)

    詳解基于java的Socket聊天程序——服務(wù)端(附demo)

    這篇文章主要介紹了詳解基于java的Socket聊天程序——服務(wù)端(附demo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • 去掉 IDEA 中 mybatis配置文件的局部背景顏色(圖解)

    去掉 IDEA 中 mybatis配置文件的局部背景顏色(圖解)

    這篇文章通過(guò)圖文并茂的形式給大家介紹了去掉IntelliJ IDEA 中 mybatis配置文件的局部背景顏色及mybatis 對(duì)應(yīng)的 xml 文件警告的方法圖解,需要的朋友可以參考下
    2018-09-09
  • SpringBoot使用JavaMailSender實(shí)現(xiàn)發(fā)送郵件+Excel附件

    SpringBoot使用JavaMailSender實(shí)現(xiàn)發(fā)送郵件+Excel附件

    項(xiàng)目審批完畢后,需要發(fā)送郵件通知相關(guān)人員,并且要附帶數(shù)據(jù)庫(kù)表生成的Excel表格,這就要求不光是郵件發(fā)送功能,還要臨時(shí)生成Excel表格做為附件,本文詳細(xì)介紹了SpringBoot如何使用JavaMailSender實(shí)現(xiàn)發(fā)送郵件+Excel附件,需要的朋友可以參考下
    2023-10-10
  • Java語(yǔ)言中的內(nèi)存泄露代碼詳解

    Java語(yǔ)言中的內(nèi)存泄露代碼詳解

    這篇文章主要介紹了Java語(yǔ)言中的內(nèi)存泄露代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • java如何根據(jù)模板導(dǎo)出數(shù)據(jù)到word文檔中(表格、自定義標(biāo)簽等)

    java如何根據(jù)模板導(dǎo)出數(shù)據(jù)到word文檔中(表格、自定義標(biāo)簽等)

    這篇文章主要介紹了關(guān)于java如何根據(jù)模板導(dǎo)出數(shù)據(jù)到word文檔中(表格、自定義標(biāo)簽等)的相關(guān)資料,主要包括創(chuàng)建docx文檔,配置模板信息,以及利用XDocReport+FreeMarker技術(shù)進(jìn)行實(shí)現(xiàn),詳細(xì)介紹了在Word模板中如何設(shè)置字段以及如何通過(guò)代碼填充這些字段,需要的朋友可以參考下
    2024-11-11
  • Spring Boot整合Swagger測(cè)試api構(gòu)建全紀(jì)錄

    Spring Boot整合Swagger測(cè)試api構(gòu)建全紀(jì)錄

    這篇文章主要給大家介紹了關(guān)于Spring Boot整合Swagger測(cè)試api構(gòu)建的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • maven的安裝配置使用詳解

    maven的安裝配置使用詳解

    這篇文章主要介紹了maven的安裝配置使用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java獲取客戶端真實(shí)IP地址經(jīng)典寫(xiě)法詳解

    Java獲取客戶端真實(shí)IP地址經(jīng)典寫(xiě)法詳解

    在Web開(kāi)發(fā)中,獲取客戶端的真實(shí)IP地址是一個(gè)常見(jiàn)需求,本文將分別給出經(jīng)典寫(xiě)法(基于工具類(lèi)/條件判斷)和Lambda寫(xiě)法(基于函數(shù)式接口?+?流式處理)的實(shí)現(xiàn),并進(jìn)行對(duì)比
    2026-04-04
  • java去除圖片水印的四種方法實(shí)現(xiàn)與對(duì)比

    java去除圖片水印的四種方法實(shí)現(xiàn)與對(duì)比

    這篇文章將從簡(jiǎn)單到復(fù)雜,為大家詳細(xì)介紹幾種常見(jiàn)的 Java 去水印方法、適用的場(chǎng)景以及需要注意的事項(xiàng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-08-08

最新評(píng)論

信宜市| 长沙县| 黄骅市| 湘潭市| 青川县| 南溪县| 加查县| 陆川县| 张掖市| 隆林| 高青县| 团风县| 巴中市| 海南省| 镇远县| 墨竹工卡县| 青铜峡市| 兰西县| 阿瓦提县| 怀柔区| 平武县| 新蔡县| 长岛县| 黄骅市| 祁东县| 东安县| 临猗县| 双桥区| 庆云县| 东阿县| 沾益县| 潜山县| 女性| 贵阳市| 泰顺县| 张家口市| 潮安县| 彰武县| 郓城县| 贞丰县| 积石山|