对某个类 做日志记录 (只对修改的字段做日志记录)

之前公司做对c端用户被修改信息计入日志的操作,最开始是将修改前后的对象以JSON拼接存入日志表的,后来发现有的拼接出的内容太长,大部分没有修改的字段没有必要存入日志。所以现在改成只对修改的字段存入日志。

    /**
     * 只对被操作对象发生修改的字段记入日志
     * @param beforeObj
     * @param afterObj
     * @author  lihao
     * @date 2020-12-19
     * @return String
     */
    @Override
    public String logSetContent(Object beforeObj, Object afterObj) {
        Field[] fields = beforeObj.getClass().getDeclaredFields();
        String context = "";
        for(int i=0 ; i<fields.length ; i++)
        {
            String fieldName = fields[i].getName();
            if(fieldName.equals("serialVersionUID")) {continue;}
            String firstField = fieldName.substring(0 , 1).toUpperCase();
            String getter = "get" + firstField + fieldName.substring(1);
            Method method = null;
            Object beforeValue=null;
            Object afterValue = null;
            try {
                method = beforeObj.getClass().getMethod(getter, new Class[] {});
                beforeValue = method.invoke(beforeObj, new Object[] {});
                method = afterObj.getClass().getMethod(getter, new Class[] {});
                afterValue= method.invoke(afterObj, new Object[] {});
            } catch (Exception e) {
                e.printStackTrace();
                log.info("错误日志: 错误信息:" + e.getMessage() + "类:" +  e.getClass());
            }
            if(beforeValue != null && afterValue != null)
            {
                System.out.println(beforeValue + "   :   " +afterValue);
                if(!beforeValue.toString().equals(afterValue.toString()))
                {
                    context += fieldName + ":" + beforeValue.toString() + "--" + fieldName + afterValue.toString();
                }
            }
        }
        return  context;
    }

最近老悲观了   每天这么辛苦是为了什么呀   哎  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值