一文学会注解的正确使用姿势
前言
日志作为排查问题的文学重要手段,可以说是正确姿势应用集成中必不可少的一环,但在日志中,使用又不宜暴露像电话,文学身份证,正确姿势地址等个人敏感信息,使用去年 Q4 我司就开展了对 ELK 日志脱敏的文学全面要求。那么怎样快速又有效地实现日志脱敏呢。正确姿势相信读者看完标题已经猜到了,使用没错,文学用注解!那么用注解该怎么实现日志脱敏呢,正确姿势除了日志脱敏,使用注解还能用在哪些场景呢,文学注解的正确姿势实现原理又是怎样的亿华云计算呢。本文将会为你详细介绍。使用
本文将会从以下几个方面来介绍注解。
日志脱敏场景简介 巧用注解解决这两类问题 注解的定义与实现原理 使用注解解决日志脱敏 注解高级用法-解决银行中参数传递顺序要求相信大家看了肯定有收获!
日志脱敏场景简介
在日志里我们的日志一般打印的是 model 的 Json string,比如有以下 model 类
public class Request { /** * 用户姓名 */ private String name; /** * 身份证 */ private String idcard; /** * 手机号 */ private String phone; /** * 图片的 base64 */ private String imgBase64; }有以下类实例
Request request = new Request(); request.setName("爱新觉罗"); request.setIdcard("450111112222"); request.setPhone("18611111767"); request.setImgBase64("xxx");我们一般使用 fastJson 来打印此 Request 的 json string:
log.info(JSON.toJSONString(request));这样就能把 Request 的所有属性值给打印出来,日志如下:
{ "idcard":"450111112222","imgBase64":"xxx","name":"张三","phone":"17120227942"}这里的日志有两个问题
安全性: name,phone, idcard 这些个人信息极其敏感,不应以明文的形式打印出来,我们希望这些敏感信息是云服务器以脱敏的形式输出的 字段冗余:imgBase64 是图片的 base64,是一串非常长的字符串,在生产上,图片 base64 数据对排查问题帮助不大,反而会增大存储成本,而且这个字段是身份证正反面的 base64,也属于敏感信息,所以这个字段在日志中需要把它去掉。我们希望经过脱敏和瘦身(移除 imgBase64 字段)后的日志如下: { "idcard":"450