【bug】 -- Push项目的log优化RecordNotExistException()

现象:

日常维护系统过程中,发现log中经常出现因RecordNotExistException()打印出的stacktrace,并没有出现业务上的问题,但是容易混淆视线,而且占用内存。组长就让排查下这个log存在的意义,是否是业务上的正常case。以进行后续的优化。

排查:

经查发现,这是我们自定义的一个异常类,当时是前同事负责此处逻辑处理。可能当时就是为了打印此处异常stacktrace。但是现在感觉日志级别有些高,没有必要。于是决定不再输出stacktrace,减少内存占用和视线混淆。

处理:

发生此异常的位置以及抛出异常的方法。

发现异常捕获是在外边,而且不单纯是为了捕获getByUUIDAndApp的异常,还有可能存在其他方法等的其他异常信息,比如NullPointerException,ClassNotFoundException等RuntimeException,所以也不能说为了不抛RecordNotExistException()就直接将

logger.error("发生了异常,{}",e);

修改成

logger.warn("RecordNotExistException : ",e.getMessage());

所以解决方案如下,有两种,(优选方案一):

方案一:将本次打印无意义stacktrace的自定义异常类RecordNotExistException()另行处理,其他异常依然按原有方式进行处理。

        @Override
        public void onException (Exception e){
            if (e instanceof RecordNotExistException) {
                logger.warn("RecordNotExistException : ", e.getMessage());
            } else {
                logger.error("发生了异常,{}", e);
            }
        }

方案二:在原始调用getByUUIDAndApp的方法call()中捕获到异常后,不抛出即可。

        try {
            deviceUserEntity = DeviceTokenBiz.this.deviceBiz.getByUUIDAndApp(oldDeviceUUID, appId);
        } catch (RecordNotExistException e) {

        }

题外话:

为什么不直接在getByUUIDAndApp直接使用log.warn呢?因为这个方法很可能被的类或工程引用,能不改尽量还是不改的。虽然修改之后对当前项目没有其他影响。

补充:

 异常信息打印的不同效果。各取所需。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值