logback中隱藏部分日誌內容

1.自定義註解
@Documented
@Inherited
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Desensitized {
    String value() default "";
}
2.使用註解過濾的方法,對原對象不做修改
public Object getObj(Object object) throws IOException {
        Class cls=object.getClass();
        String value = objectMapper.writeValueAsString(object);
        Object obj = objectMapper.readValue(value, cls);

        if (obj != null) {
            Field[] fields = obj.getClass().getDeclaredFields();
            for (Field field : fields) {
                Desensitized annotation = field.getAnnotation(Desensitized.class);
                if (annotation != null) {
                    try {
                        field.setAccessible(true);
                        field.set(obj, "");
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return obj;
    }
3.驗證
public class ClassDto extends PageDto{
    @Desensitized
    private String classNo;
    private String className;
    private String classPIc;

    public String getClassNo() {
        return classNo;
    }

    public void setClassNo(String classNo) {
        this.classNo = classNo;
    }


    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getClassPIc() {
        return classPIc;
    }

    public void setClassPIc(String classPIc) {
        this.classPIc = classPIc;
    }
}

前端請求
後臺打印:
後臺打印

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章