java 日志打印实体类时隐藏敏感字段不打印
在日常开发过程中经常会遇到一些实体类中定义的字段是敏感字段,例如密码,手机号等敏感信息,有需要将实体信息打印到日志中的情况。所以需要在调用日志打印框架时想将敏感字段隐藏掉,不要输出到日志中。
·
一、需求
在日常开发过程中经常会遇到一些实体类中定义的字段是敏感字段,例如密码,手机号等敏感信息,有需要将实体信息打印到日志中的情况。所以需要在调用日志打印框架时想将敏感字段隐藏掉,不要输出到日志中。
二、解决方案
大多数情况的日志打印都是将实体直接转成Sting,因此我们可以使用Lombok工具包提供的@ToString注解,来实现针对实体转成字符创输出时,隐藏某些敏感字段。
注意:此方法仅限于打印时直接将实体类以String的方式输出。不支持转成JSON格式的输出。
1、@ToString(exclude=“psw”)
排除实体中psw列所对应的元素,即在生成toString方法时不包含psw参数以及对应参数的值;
2、@ToString(exclude={“psw”,“id”})
排除多个psw、id列所对应的元素。
3、@ToString(of=“name”)
只生成包含name列所对应的元素的参数的toString方法。
4、@ToString(o{“id”,“name”})
只生成包含id、name列所对应的元素的参数的toString方法。
三、示例
1、打印时排除OprPwd的打印输出
@Data
@ToString(exclude="oprPwd")
@NoArgsConstructor
public class SquadRequest {
private String oprId;
private String name;
private String oprPwd;
}
更多推荐
所有评论(0)