简易的第三方组件日志脱敏
Posted Fire king
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简易的第三方组件日志脱敏相关的知识,希望对你有一定的参考价值。
简易的第三方组件日志脱敏
- 1.下载jar包并打入自己的本地仓库
- 2.依赖
- 3.日志依赖
- 4.脱敏规则-logback-desensitize.yml
- 5.logback.xml
- 6.application.yml
- 7.logback.xml种替换成脱敏的类
- 8.测试
- 9.demo结构
- 10.gitee地址
- 11.[参考](https://blog.csdn.net/m0_48333563/article/details/125806919?csdn_share_tail=%7B%22type%22:%22blog%22,%22rType%22:%22article%22,%22rId%22:%22125806919%22,%22source%22:%22m0_48333563%22%7D&ctrtid=sz8a4)
- 12.资源以上传
1.下载jar包并打入自己的本地仓库
随便找个地儿,mvn -v
确保maven仓库配置正确
在jar所在文件夹打开cmd终端,键入
mvn install:install-file -DgroupId=pers.liuchengyin -DartifactId=logback-desensitization -Dversion=1.0.0 -Dpackaging=jar -Dfile=logback-desensitization-1.0.0.jar
2.依赖
<dependency>
<groupId>pers.liuchengyin</groupId>
<artifactId>logback-desensitization</artifactId>
<version>1.0.0</version>
</dependency>
3.日志依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
4.脱敏规则-logback-desensitize.yml
# 日志脱敏
log-desensitize:
# 是否忽略大小写匹配,默认为true
ignore: true
# 是否开启脱敏,默认为false
open: true
# pattern下的key/value为固定脱敏规则
pattern:
# 邮箱 - @前第4-7位脱敏
email: "@>(4,7)"
# qq邮箱 - @后1-3位脱敏
qqemail: "@<(1,3)"
# 姓名 - 姓脱敏,如*杰伦
name: 1,1
# 密码 - 所有需要完全脱敏的都可以使用内置的password
password: password
patterns:
# 身份证号,key后面的字段都可以匹配以下规则(用逗号分隔)
- key: identity,idcard
# 定义规则的标识
custom:
# defaultRegex表示使用组件内置的规则:identity表示身份证号 - 内置的18/15位
- defaultRegex: identity
position: 9,13
# 内置的other表示如果其他规则都无法匹配到,则按该规则处理
- defaultRegex: other
position: 9,10
# 电话号码,key后面的字段都可以匹配以下规则(用逗号分隔)
- key: phone,cellphone,mobile
custom:
# 手机号 - 内置的11位手机匹配规则
- defaultRegex: phone
position: 4,7
# 自定义正则匹配表达式:座机号(带区号,号码七位|八位)
- customRegex: "^0[0-9]2,3-[0-9]7,8"
# -后面的1-4位脱敏
position: "-<(1,4)"
# 自定义正则匹配表达式:座机号(不带区号)
- customRegex: "^[0-9]7,8"
position: 3,5
# 内置的other表示如果其他规则都无法匹配到,则按该规则处理
- defaultRegex: other
position: 1,3
# 这种方式不太推荐 - 一旦匹配不上,就不会脱敏
- key: localMobile
custom:
customRegex: "^0[0-9]2,3-[0-9]7,8"
position: 1,3
5.logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--spring boot提供的logback的默认配置,必须引用,否则日志无法输出-->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!--配置集中管理的属性-->
<property resource="application.yml"/>
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!--定义日志文件的存储地址 -->
<property name="LOG_HOME" value="logs"/>
<property name="FILE_NAME" value="$LOG_HOME/%dyyyy-MM-dd"/>
<!--定义自己个日志格式-->
<property name="PATTERN" value="%dyyyy-MM-dd HH:mm:ss.SSS %-5level [%thread] %c50 %M %L -- %m%n"/>
<!--
%dyyyy-MM-dd HH:mm:ss.SSS 日期格式
%c 类的完整名称
%logger 类的完整名称
%M 方法名
%L 行号
%thread 线程
%m 信息
%n 换行
%-5level 信息级别
-->
<!-- 控制台输出 -->
<appender name="STDOUT" class="pers.liuchengyin.logbackadvice.LcyConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$PATTERN</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>$FILE_NAME_all.txt</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>7</MaxHistory>
<totalSizeCap>512MB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$PATTERN</pattern>
<!--<pattern>%JsonOutPut %n</pattern>-->
</encoder>
</appender>
<!-- 按照每天生成日志文件过滤消息级别 -->
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>$FILE_NAME_err.txt</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>7</MaxHistory>
<totalSizeCap>512MB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$PATTERN</pattern>
<!--<pattern>%JsonOutPut %n</pattern>-->
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!--设置过滤级别-->
<level>ERROR</level>
<!--过滤级别以上的处理方式-->
<onMatch>ACCEPT</onMatch>
<!--过滤级别以下的处理方式-->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 按照每天生成html日志文件 -->
<appender name="FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>$FILE_NAME_all.html</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>7</MaxHistory>
<totalSizeCap>512MB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%dyyyy-MM-dd HH:mm:ss.SSS%-5level%thread%c50%M%L%m</pattern>
</layout>
</encoder>
</appender>
<!--异步日志-->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!--指定需要异步打印的日志-->
<appender-ref ref="FILE" />
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="FILE_HTML"/>
<appender-ref ref="FILE_ERROR"/>
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
6.application.yml
logging:
config: classpath:logback.xml
7.logback.xml种替换成脱敏的类
①ConsoleAppender - 控制台脱敏
// 原类
ch.qos.logback.core.ConsoleAppender
// 替换类
pers.liuchengyin.logbackadvice.LcyConsoleAppender
②RollingFileAppender - 滚动文件
// 原类
ch.qos.logback.core.FileAppender
// 替换类
pers.liuchengyin.logbackadvice.LcyFileAppender
③FileAppender - 文件
// 原类
ch.qos.logback.core.FileAppender
// 替换类
pers.liuchengyin.logbackadvice.LcyFileAppender
替换示例:
<!-- 控制台输出 -->
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$PATTERN</pattern>
</encoder>
</appender>
替换
<appender name="STDOUT" class="pers.liuchengyin.logbackadvice.LcyConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$PATTERN</pattern>
</encoder>
</appender>
8.测试
@SpringBootApplication
@Slf4j
public class LogApplication
public static void main(String[] args)
SpringApplication.run(LogApplication.class , args);
log.info("your email:, your phone:", "123456789@qq.com","15310763497");
log.info("your name:", "周杰伦");
log.info("your password:" , "15310763497");
log.info("your identity:", "4408821777708052456");
log.info("your identity:", "440882199910");
9.demo结构
10.gitee地址
https://gitee.com/xulehuang/example/tree/master/log-tuo-min
11.参考
12.资源以上传
暑期编程PK赛 得CSDN机械键盘等精美礼品!以上是关于简易的第三方组件日志脱敏的主要内容,如果未能解决你的问题,请参考以下文章