精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot與Logback整合,實現敏感信息日志脫敏并且異步高效寫入?功能

開發 前端
?Logback 是一個強大且靈活的日志框架,適用于各種規模的應用程序。通過自定義 Appender,可以實現復雜的日志處理邏輯,如敏感信息脫敏和異步寫入,從而提升系統的安全性和性能。

Logback 是一個強大且靈活的日志框架,適用于各種規模的應用程序。通過自定義 Appender,可以實現復雜的日志處理邏輯,如敏感信息脫敏和異步寫入,從而提升系統的安全性和性能。

工作流程

圖片圖片

為什么需要自定義 Appender?

在某些情況下,默認的 Appender 無法滿足特定需求,例如:

  • 自動脫敏敏感信息。
  • 異步處理日志以提高性能。
  • 將日志發送到外部系統或服務。

代碼實操

<!-- Disruptor -->
    <dependency>
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <version>3.4.4</version>
    </dependency>

    <!-- Logback Classic -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
    </dependency>

創建自定義Appender

創建一個名為SensitiveDataMaskingAppender的類,該類繼承自AppenderBase<ILoggingEvent>,并在其中使用Disruptor隊列進行異步處理。

package com.example.demo.logging;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import com.lmax.disruptor.*;
import com.lmax.disruptor.dsl.Disruptor;
import org.slf4j.MDC;

import java.util.concurrent.Executors;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

publicclass SensitiveDataMaskingAppender extends AppenderBase<ILoggingEvent> {

    // 正則表達式模式用于匹配身份證號碼
    privatestaticfinal Pattern ID_CARD_PATTERN = Pattern.compile("\\d{15}(\\d{2}[A-Za-z])?");
    // 正則表達式模式用于匹配手機號碼
    privatestaticfinal Pattern PHONE_NUMBER_PATTERN = Pattern.compile("(\\+86)?(1[3-9]\\d{9})");

    private RingBuffer<Event> ringBuffer;

    @Override
    public void start() {
        super.start();

        // 創建事件工廠
        EventFactory<Event> factory = Event::new;
        // 設置環形緩沖區大小,必須是2的冪
        int bufferSize = 1024;
        // 使用緩存線程池
        Executor executor = Executors.newCachedThreadPool();
        // 創建Disruptor實例
        Disruptor<Event> disruptor = new Disruptor<>(factory, bufferSize, executor,
                ProducerType.MULTI, new BusySpinWaitStrategy());
        // 設置事件處理器
        disruptor.handleEventsWith(new EventHandler<Event>() {
            @Override
            public void onEvent(Event event, long sequence, boolean endOfBatch) throws Exception {
                // 脫敏日志消息
                String logMessage = maskSensitiveData(event.getLogMessage());
                // 打印脫敏后的日志消息到控制臺
                System.out.println(logMessage);
            }
        });
        // 獲取RingBuffer
        ringBuffer = disruptor.getRingBuffer();
        // 啟動Disruptor
        disruptor.start();
    }

    @Override
    protected void append(ILoggingEvent eventObject) {
        // 獲取下一個序列號
        long sequence = ringBuffer.next(); 
        try {
            // 根據序列號獲取事件對象
            Event event = ringBuffer.get(sequence); 
            // 設置日志消息
            event.setLogMessage(eventObject.getMessage()); 
        } finally {
            // 發布事件
            ringBuffer.publish(sequence);
        }
    }

    /**
     * 脫敏日志消息中的敏感信息
     * @param message 日志消息
     * @return 脫敏后的日志消息
     */
    private String maskSensitiveData(String message) {
        Matcher idCardMatcher = ID_CARD_PATTERN.matcher(message);
        while (idCardMatcher.find()) {
            // 替換身份證號碼中間部分為星號
            String maskedIdCard = idCardMatcher.group().substring(0, 6) + "********" + idCardMatcher.group().substring(14);
            message = message.replace(idCardMatcher.group(), maskedIdCard);
        }

        Matcher phoneNumberMatcher = PHONE_NUMBER_PATTERN.matcher(message);
        while (phoneNumberMatcher.find()) {
            // 替換手機號碼中間部分為星號
            String maskedPhoneNumber = phoneNumberMatcher.group().substring(0, 3) + "****" + phoneNumberMatcher.group().substring(7);
            message = message.replace(phoneNumberMatcher.group(), maskedPhoneNumber);
        }

        return message;
    }

    // 定義事件類
    privatestaticclass Event {
        private String logMessage;

        public String getLogMessage() {
            return logMessage;
        }

        public void setLogMessage(String logMessage) {
            this.logMessage = logMessage;
        }
    }
}

配置Logback使用自定義Appender

在src/main/resources/logback-spring.xml文件中配置自定義appender:

<configuration>
    <!-- 自定義Appender配置 -->
    <appender name="SENSITIVE_MASKING_APPENDER" class="com.example.demo.logging.SensitiveDataMaskingAppender">
    </appender>

    <!-- 根Logger配置 -->
    <root level="info">
        <appender-ref ref="SENSITIVE_MASKING_APPENDER"/>
    </root>
</configuration>

創建Controller、Service和Repository層

Controller層

創建一個簡單的控制器來測試日志記錄功能。

package com.example.demo.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
publicclass UserController {

    // 獲取日志記錄器
    privatestaticfinal Logger logger = LoggerFactory.getLogger(UserController.class);

    /**
     * 處理/user請求,記錄用戶信息并返回響應
     * @param idCard 用戶身份證號碼
     * @param phoneNumber 用戶手機號碼
     * @return 響應字符串
     */
    @GetMapping("/user")
    public String getUserInfo(@RequestParam String idCard, @RequestParam String phoneNumber) {
        // 記錄用戶信息到日志
        logger.info("User Info - ID Card: {}, Phone Number: {}", idCard, phoneNumber);
        return"User info logged";
    }
}

啟動類

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

測試

curl "http://localhost:8080/user?idCard=123456123456123456&phnotallow=13800138000"

控制臺日志

User Info - ID Card: 123456********56, Phone Number: 138****8000
責任編輯:武曉燕 來源: Java知識日歷
相關推薦

2025-03-11 08:34:22

2024-09-05 08:58:37

2025-09-08 09:14:31

SpringQuartz自動識別

2023-10-09 07:37:01

2023-10-27 08:46:34

DFA算法工具

2025-02-14 09:07:35

2024-12-24 08:44:55

ActiveMQRabbitMQ交換機

2025-05-20 09:00:04

SpringGeoHash派單

2025-07-22 03:15:00

SpringFlight零拷貝

2025-05-16 08:55:58

2023-06-06 08:51:06

2025-03-20 08:57:54

Spring日志存儲系統

2025-03-19 08:36:55

2025-03-26 08:43:17

2025-07-31 08:58:50

2025-05-23 08:37:26

2025-10-14 07:38:40

2025-04-23 08:50:00

SpringBootCurator分布式鎖

2021-10-28 07:56:52

多線程日志系統嵌入式開發

2025-11-21 08:08:57

點贊
收藏

51CTO技術棧公眾號

国产成人在线电影| 亚洲成人三区| 欧美日韩在线三区| 美女黄色片网站| 亚洲成a人片在线| 久久一二三区| 欧美大片第1页| wwwwxxxx国产| 亚洲一区二区三区日本久久九| 岛国av一区二区| 国产又大又长又粗又黄| 亚洲人妻一区二区| 国产一区二区三区四| 浅井舞香一区二区| 亚洲二区在线播放| 少妇精品久久久一区二区| 日韩午夜中文字幕| 欧美黄色性生活| 波多野结衣精品| 国产精品久久看| 欧美美乳视频网站在线观看| 99热这里只有精| 日韩av网站在线观看| 久久人人爽人人| 在线免费看av网站| 凹凸成人精品亚洲精品密奴| 日韩一区二区三区免费看| 91最新在线观看| 蜜桃视频m3u8在线观看| 亚洲男同性视频| 一本久久a久久精品vr综合| 亚洲 欧美 精品| 经典三级在线一区| 国产精品久久久久久久久久 | 精品三级av在线导航| 欧美日韩国产天堂| 另类小说第一页| 日韩性xxx| 岛国av一区二区三区| 人体内射精一区二区三区| caopeng在线| 亚洲精品视频在线看| 亚洲欧美日韩在线综合 | 97人妻精品一区二区三区视频| 美女尤物久久精品| 欧美在线视频免费| 中文字幕69页| 日日摸夜夜添夜夜添精品视频| 91成人精品网站| 日韩免费一级片| 亚洲日韩视频| 2019中文字幕在线观看| 日本一级一片免费视频| 中文在线不卡| 欧美一级视频在线观看| 欧美videossex极品| 国产日韩精品视频一区二区三区| 97av在线视频| 四虎成人在线观看| 秋霞影院一区二区| 国产欧美日韩综合精品| 96日本xxxxxⅹxxx17| 国内国产精品久久| 99re视频在线播放| 五月天丁香视频| 久久久久久97三级| 天堂av一区二区| 午夜免费播放观看在线视频| 亚洲欧美日韩系列| 日韩黄色短视频| 欧美成人ⅴideosxxxxx| 欧美亚洲一区二区在线观看| 爱爱爱爱免费视频| 亚洲成人黄色| 日韩精品视频免费专区在线播放 | 国产小视频精品| 香蕉成人在线| 日韩美女在线视频| 在线精品一区二区三区| 日韩欧美在线中字| 欧美老少做受xxxx高潮| www.国产com| 久久精品久久综合| 99re6热在线精品视频播放速度| 天天干免费视频| 中文字幕免费在线观看视频一区| 色呦呦网站入口| heyzo高清在线| 在线观看网站黄不卡| av在线免费看片| 美女一区2区| 在线观看久久久久久| 久草成人在线视频| 三级成人在线视频| 99爱精品视频| yourporn在线观看视频| 亚洲精品视频在线观看网站| 99爱视频在线| 日韩精品一区二区三区中文 | 91免费公开视频| 99热精品在线| 91精品免费视频| 九一国产在线| 亚洲一区二区三区精品在线| 国产理论在线播放| 国产一区二区三区不卡av| 中文字幕在线精品| 91九色丨porny丨肉丝| 精品写真视频在线观看 | 久久精品a一级国产免视看成人 | 亚洲日本视频在线观看| 国产综合久久久久久鬼色| 久久综合给合久久狠狠色| 大片免费在线观看| 欧美色爱综合网| 欧美图片一区二区| 精品69视频一区二区三区Q| 国产欧美日韩免费| 青青草超碰在线| 亚洲一区二区欧美日韩| 亚洲一区二区福利视频| 国产伦精品一区二区三区千人斩 | 最新在线中文字幕| 91日韩一区二区三区| 精品无码av无码免费专区| 激情亚洲小说| 亚洲三级黄色在线观看| 亚洲天堂日韩av| 大陆成人av片| 996这里只有精品| av一级久久| 最近免费中文字幕视频2019| 天天干天天操天天操| 91在线视频18| 极品美女扒开粉嫩小泬| 福利欧美精品在线| 久久久久久久国产精品视频| a毛片在线免费观看| 中文字幕中文字幕一区二区| 欧美黄色性生活| 日本大胆欧美| 日产精品一区二区| 久久伊人精品天天| 国产一区二区在线视频观看| 中文字幕精品一区二区三区精品| 免费裸体美女网站| 国产成人三级| 国产精品福利在线| 成人亚洲综合天堂| 欧美三级乱人伦电影| 91狠狠综合久久久久久| 免费观看日韩av| 一区二区精品在线| 91麻豆精品一二三区在线| 久久亚洲国产精品| 精品国产黄色片| 亚洲综合色网站| www.com日本| 99pao成人国产永久免费视频| 国产青春久久久国产毛片| 欧美裸体视频| 亚洲欧美日韩国产中文| 日本欧美www| 国产精品传媒入口麻豆| 亚洲成人av免费观看| 激情亚洲网站| 蜜桃av噜噜一区二区三| 91精品影视| 久久精品免费播放| 成人毛片视频免费看| 午夜精品久久久久久不卡8050| 香蕉视频黄色在线观看| 久热成人在线视频| 成人区一区二区| 婷婷综合电影| 国产精品一区久久久| 在线观看wwwxxxx| 日韩av影院在线观看| 亚洲精品毛片一区二区三区| 亚洲人成网站色在线观看| 挪威xxxx性hd极品| 日本在线不卡视频一二三区| 一本二本三本亚洲码| 国产suv精品一区| 国产精品久久久久久久天堂| 国产cdts系列另类在线观看| 亚洲精品国产电影| 一级黄色片网站| 亚洲成av人影院| 亚洲毛片亚洲毛片亚洲毛片| 国产成人福利片| 国产精品欧美激情在线观看| 在线中文字幕第一区| 欧美极品一区| 91成人精品在线| 国产精品露脸av在线| 欧美精品videossex少妇| 亚洲天堂av在线免费| 国产高潮流白浆喷水视频| 欧美日韩中文字幕综合视频| 天天看天天摸天天操| 91网站最新网址| 制服下的诱惑暮生| 日产欧产美韩系列久久99| 99在线免费视频观看| 四虎8848精品成人免费网站| 久久er99热精品一区二区三区| 亚洲成人精品综合在线| 日本成人三级电影网站| 做爰视频毛片视频| 一个色在线综合| 在线免费观看视频| www.欧美日韩国产在线| 五月激情五月婷婷| 爽好多水快深点欧美视频| 日本a级片在线播放| 成人影视亚洲图片在线| 国新精品乱码一区二区三区18| 亚洲久草在线| 国产精品国产三级国产专播精品人| 高清电影在线观看免费| 啊v视频在线一区二区三区| 久久久久久女乱国产| 久久av一区| 北条麻妃一区二区三区中文字幕| 四虎电影院在线观看| 欧美xxxxxxxx| 99久久国产免费| 欧美日韩精品一区二区三区四区 | 国模吧视频一区| 日本免费在线视频观看| 不卡一区综合视频| 欧美福利精品| 秋霞影院一区二区三区| 99久久自偷自偷国产精品不卡| 午夜精品久久久久久毛片| 国产精品高潮粉嫩av| 欧美大片免费| 555www成人网| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | 精品福利在线视频| 国产精品自拍视频一区| 亚洲综合在线第一页| 玖玖爱免费视频| 亚洲一区二区3| 青娱乐国产在线视频| 亚洲欧美日韩国产一区二区三区 | 欧美私人啪啪vps| 中国女人做爰视频| 欧美大片一区| 国产精品va在线观看无码| 欧美精品播放| 欧美视频在线观看视频| 影音先锋中文字幕一区| 免费国产黄色网址| 亚洲一区国产| 92看片淫黄大片一级| 玖玖玖国产精品| 国产主播中文字幕| 蜜桃精品视频在线| 国产无色aaa| 国产一区二区毛片| 无码人妻一区二区三区精品视频| 免费看污视频的网站| 色综合夜色一区| 中文字幕一区二区久久人妻| 欧美乱妇一区二区三区不卡视频| 国产精品精品一区二区三区午夜版| av资源在线观看免费高清| 少妇精69xxtheporn| 成年人黄视频在线观看| 欧美激情精品久久久久久蜜臀| 国产盗摄精品一区二区酒店| 欧美一区二区色| 激情中国色综合| 999在线观看免费大全电视剧| 全国精品免费看| 一区二区免费在线视频| 欧美一区二区| 欧美日韩亚洲一| 久久精品免费观看| 大尺度做爰床戏呻吟舒畅| 国产亚洲人成网站| 国产极品国产极品| 欧美特级www| 国产乱码精品一区二三区蜜臂 | 成人1区2区3区| 亚洲精品自拍视频| 求av网址在线观看| 久久久久久12| 亚洲成人激情社区| 97se在线视频| 精品一区毛片| 成人黄色片免费| 久色成人在线| 99久久久无码国产精品性波多| 国产欧美日韩精品a在线观看| 综合五月激情网| 色婷婷久久99综合精品jk白丝| www.国产麻豆| 中文字幕av一区二区| 岛国av在线网站| 91久久久久久久久久久| 清纯唯美亚洲经典中文字幕| 亚洲色图都市激情| 校园春色综合网| 可以看的av网址| 亚洲国产成人自拍| 成人午夜淫片100集| 精品国产免费一区二区三区四区 | 欧美日本网站| 欧美大片第1页| 国产精品无码久久久久| 国产中文一区二区| 亚洲香蕉av| 欧美精品无码一区二区三区| 粉嫩一区二区三区在线看| 五月天免费网站| 色综合中文综合网| 午夜18视频在线观看| 欧美成人全部免费| 999精品嫩草久久久久久99| 欧美影视一区二区| 亚洲经典三级| 精品无码av一区二区三区不卡| 国产精品看片你懂得| 97久久久久久久| 亚洲第一中文字幕在线观看| 自由的xxxx在线视频| 91精品久久久久久久久青青| 精品国产一区二区三区噜噜噜| 国内自拍在线观看| 99国产精品久久久| 国产精品日日夜夜| 欧美tickling网站挠脚心| 在线观看免费视频你懂的| 成人福利视频网| 91视频精品| 亚洲天堂国产视频| 1区2区3区精品视频| 国产又爽又黄免费软件| 少妇高潮 亚洲精品| 亚洲资源在线| 2025韩国大尺度电影| 国产麻豆视频精品| 少妇影院在线观看| 精品国产凹凸成av人导航| 色yeye免费人成网站在线观看| 99久久精品久久久久久ai换脸| 欧美永久精品| 四虎成人免费视频| 欧美日韩国产丝袜另类| 三级在线观看| 国产精品盗摄久久久| 青青草97国产精品麻豆| 成人日韩在线视频| 亚洲精品国产无天堂网2021| 超碰在线观看99| 81精品国产乱码久久久久久| 日韩激情啪啪| 国产v亚洲v天堂无码久久久| 亚洲国产精品二十页| 91亚洲国产成人精品一区| 久久天天躁狠狠躁夜夜爽蜜月| 蜜桃精品一区二区三区| 久久久久久免费看| 久久综合九色综合97婷婷| 国产男人搡女人免费视频| 日韩亚洲成人av在线| 精品一区二区三区四区五区 | 精品国产成人在线影院| 九九色在线视频| 九九九九久久久久| 日韩成人一级大片| 久久久久亚洲AV成人| 日韩高清a**址| 福利视频一区| 日韩国产精品毛片| 91在线高清观看| 在线观看亚洲黄色| 美女国内精品自产拍在线播放| 国产精品传媒| 天天插天天操天天射| 又紧又大又爽精品一区二区| 午夜视频www| 国产中文字幕日韩| 亚洲啪啪91| 日本女人性生活视频| 精品国产不卡一区二区三区| 电影一区二区| 国产在线播放观看| 国产精品视频麻豆| 蜜桃av中文字幕| 国产精品男人爽免费视频1| 午夜日韩在线| 国产美女永久免费无遮挡| 精品久久久久久综合日本欧美 | 91在线中文字幕| 性娇小13――14欧美| 成年人一级黄色片|