1 Star 1 Fork 10

pursue2020 / 日志脱敏工具

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

logback日志脱敏工具

功能:

通过logback底层开发,在日志打印之前进行脱敏处理

1、统一日志pattern格式:
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [{0}:%X'{'{1}'}'] [%level] %logger{10}-%L %msg'{'{0},{1},{2},{3}'}'%n
2、日志敏感数据脱敏处理
3、日志超长截取

脱敏规则:

a、[trueName]真实姓名脱敏(展示姓名第一个字,其余用*替换)
b、[idCardNo]身份证号码脱敏(展示身份证号码前3位和最后4位,其余用*替换)
c、[phoneNo]手机号码脱敏(展示手机号码前3位和最后4位,其余用*替换)
d、[bankcardNo]银行卡号脱敏(展示银行卡号前6位和最后4位,其余用*替换)
e、[other]其它数据脱敏(全部用*替换)

使用方法:

引入jar 包
<groupId>com.gitee.cqdevops.desensitization</groupId>
<artifactId>desensitization-logback</artifactId>
<version>1.1.1</version>
logback.xml添加配置项:
1、配置 通用pattern格式Encoder
<!--配置 通用pattern格式Encoder-->
<!--sensitiveData:脱敏处理的规则-->
<!--mdcKeys:自定义的MDC名称-->
<!--converterCanRun:脱敏功能开关:true打开,false关闭-->
<!--maxLength:日志最大长度-->
<!--depth:脱敏深度-->
<encoder class="com.gitee.cqdevops.desensitization.encoder.CommonPatternLayoutEncoder">  
    <converterCanRun>true</converterCanRun>          	                
    <sensitiveData>
        <!-- 以下只能出现一种 -->
        <!--sensitiveData配置规则,关键字类型:trueName,idCardNo,bankcardNo,phoneNo,other -->
        <!--示例 关键字类型1:关键字或正则表达式(多个用;隔开),关键字类型2:关键字或正则表达式...-->
        idCardNo:cardId;idNo,trueName:realName <!--按关键字脱敏处理-->
        "idCardNo:\d{18}","phoneNo:1[0-9]{10}" <!--按正则表达式脱敏处理(注意双引号)-->
    </sensitiveData>
    <mdcKeys>sessionId</mdcKeys>
    <depth>128</depth>
    <maxLength>2048</maxLength>
    <charset>UTF-8</charset>
</encoder>
2、配置 脱敏处理Converter
a、通过关键字脱敏
<!-- 配置 关键字脱敏处理Converter-->
<conversionRule conversionWord="msg" converterClass="com.gitee.cqdevops.desensitization.pattern.KeywordConverter"/>
b、通过正则表达式脱敏
<!-- 配置 正则表达式脱敏处理Converter-->
<conversionRule conversionWord="msg" converterClass="com.gitee.cqdevops.desensitization.patternRegularExpressionConverter"/>

logback.xml配置样例(通过关键字脱敏)

<?xml version="1.0" encoding="UTF-8"?>  
<configuration scan="true" scanPeriod="60 seconds" debug="true">
    ...  
    <!-- 配置 关键字脱敏处理Converter-->
    <conversionRule conversionWord="msg"
      converterClass="com.gitee.cqdevops.desensitization.pattern.KeywordConverter"/> 
  
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <file>日志文件名</file>
        <!-- 配置 通用pattern格式Encoder-->
        <encoder class="com.gitee.cqdevops.desensitization.encoder.CommonPatternLayoutEncoder">
            <converterCanRun>true</converterCanRun>
            <sensitiveData>idCardNo:cardId;idNo,trueName:realName</sensitiveData>
            <mdcKeys>sessionId</mdcKeys>
            <depth>128</depth>
            <maxLength>2048</maxLength>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">  
            <FileNamePattern>日志文件名-%d{yyyy-MM-dd}-%i.log</FileNamePattern>  
            <maxFileSize>64MB</maxFileSize>  
            <maxHistory>7</maxHistory>  
        </rollingPolicy>  
    </appender>  
  
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>  
    </appender>  
    ...  
</configuration>  

空文件

简介

日志脱敏处理 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/pursue2020/diary_desensitization.git
git@gitee.com:pursue2020/diary_desensitization.git
pursue2020
diary_desensitization
日志脱敏工具
master

搜索帮助