本文首发于公众号【看点代码再上班】 , 欢迎关注 , 第一时间获取最新文章 。
大家好 , 我是tin , 这是我的第5篇原创文章
本文讲述在考虑对业务系统代码入侵最小的情况下实现日志脱敏的方案原理 。文章很长 , 包括了日志脱敏起由、编码实现、.xml文件加载原理、的插件机制等 , 最后还抖出注解编译处理器 , 实现编译期动态生成代码!有点像捡到宝 , 毕竟以前没关注过注解编译处理器 , 先上一个目录:
一、为什么做日志脱敏
日志打印非常常见且重要 , 这毋庸置疑 , 但有这样一种情况:我们打印的日志包含了用户的隐私信息 , 比如做登录支付的打印用户账号和密码 , 做金融的打印用户的卡号等 , 这些日志先不说放在磁盘上管理不当可能造成用户隐私泄露 , 再者就算是合规检查 , 它也是不过关的 , 必须要做处理整治 。
我们打日志是怎么打的?先上一个图(日志中打印我的用户名和账号) , 看看我们自己就是这么用的:
没做特殊处理 , 不出意外 , 日志输出是这样的:
卡号打印出来了 , 随后这行日志就安详地躺在我们服务器磁盘上 。
二、日志脱敏编码实现
如何借助日志框架实现对账号打码脱敏 , 而不入侵业务代码?废话不多说 , 先看看我已实现的效果:
本文基于slf4j+实现 , 我们代码日志输出处没有任何改动 , 打打印出来的日志对卡号做了打码脱敏 。
本文实现日志打码脱敏的方案涉及开发的地方有两个:
一是实现的接口 , 重写;
二是修改.xml文件 。
看看我写的实现类:
.xml修改 , 下面是配置和配置:
这个文件也非常详细地把.xml配置解释了一遍 , 不是很清楚log4j配置的可留图保存啦 。
为了方便复制 , 把.xml配置的源码粘贴一份出来:
三、源码探索日志脱敏原理
为何上文这么做就能实现日志打码脱敏?是有什么变法么?实现的原理是什么?背着一大连串疑问 , 现在我们从slf4j和原理说起 , 来了 , 搬好凳子了 。
1、什么是slf4j?
slf4j全称for Java 。是一个日志接口框架 , 配合日志输出系统实现日志输出 。slf4j并不是真正输出日志的系统 , 只是定义了一套日志规范 。类似这样的日志门面还有- 。
final= .(.class);
以上的就是slf4j的类 。
2、又是什么?
才是一个真正的日志系统 , 它才是我们项目中打印日志的代码库实现 。除了 , 我们常见的日志库还有log4j、、jdk- 。
- 一朝天子一朝臣一起来看明朝这戏剧般的八年!
- 专访国内顶级商业操盘手卞波,从一年做到10个亿的企业家到谆谆传教者的进阶之路
- 不能与芋头一起吃的9种食物,芋头可以和白萝卜一起炖汤吃吗
- 1 概率与统计进阶——概率统计的基础概念:条件概率、全概率、贝叶斯公式
- 南瓜与苹果可以同食么 南瓜不能和什么食物一起吃
- 不是一家砼能一起评定吗,混凝土强度计算汇总是不是要同时间的,才能在一起汇总
- 鸭子和羊一起养可以吗?
- 6 PyQT5一起学做图书管理系统添加/删除书籍
- 不在一起怎么共享流量,两个手机怎么共享流量
- 贾午与韩寿是怎么冲破门第之见在一起的