代码标准1-日志标准

6 篇文章 0 订阅
2 篇文章 0 订阅

1、Web层日志规范(同RPC接口)

1.1、Controller层方法开始日志

当调用controller层方法时,只打印进入此方法的标识,并不打印入参。如:

public InvokeResult<List<VTLModelDTO>> getAllVTLModelDTOByMakeId(VTLModelDTO vtlModelDTO) {
    // 只打印开始标识
    LOGGER.info(" getAllVTLModelDTOByMakeId() begin.");
    ···
}
1.2、Controller层方法结束日志
1.2.1、返回正常

  controller层方法调用service层逻辑,当后者逻辑处理正常时(不抛出异常),直接打印end,若有异常,则打印failed,不打印end。如:

public InvokeResult<List<VTLModelDTO>> getAllVTLModelDTOByMakeId(VTLModelDTO vtlModelDTO) {
    ···
    // 指定的封装返回对象
    InvokeResult<List<VTLModelDTO>> result = new InvokeResult<List<VTLModelDTO>>();
    ···
    try {
        ···
        // 当逻辑处理没问题,则打印end
        LOGGER.info(" getAllVTLModelDTOByMakeId() end.");
    } catch (···) {
        ···
    }
    ···
}
1.2.2、返回异常

  当controller层调用service层逻辑出错时,打印错误failed与异常信息,不打印end,返回来自service层错误信息。如:

public InvokeResult<List<VTLModelDTO>> getAllVTLModelDTOByMakeId(VTLModelDTO vtlModelDTO) {
    ···
    // 指定的封装返回对象
    InvokeResult<List<VTLModelDTO>> result = new InvokeResult<List<VTLModelDTO>>();
    ···
    // 当逻辑处理没问题,打印成功标识
    try {
        ···
    } catch (BzException e) {
        // 返回失败标识,错误信息为service层抛出来的异常
        LOGGER.error(" getAllVTLModelDTOByMakeId() failed. e : [{}].", e);
        result.failure(e.getMessage());
    }
    ···
}

2、Service层日志规范

2.1、Service层方法开始日志

  原则上进入方法时只打印服务于本方法逻辑的参数(如:查询方法传入某对象,查询条件只用得到id,那么就不用将name字段打印出来)。如:

public List<VTLModelDTO> getAllVTLModelDTOByMakeId(VTLModelDTO vtlModelDTO) {
    /*1、只打印此方法的查询条件makeId;
     *2、为避免魔法值,将makeId置为static。
     */
    LOGGER.info(" getAllVTLModelDTOByMakeId() begin. arg data : [{}]", 
                VTLJsonObjectUtils.objectToJsonWithContains(vtlModelDTO, 
                        VTLModelDTO.class, VTLModelLogArrayDTO.MAKE_ID));
    ···
}
public Page<VTLModelDTO> pageQueryForModelDTO(VTLModelDTO vtlModelDTO) {
    /*
     *此方法为分页查询所有车系数据,只需要current和rowCount两个参数
     */
    LOGGER.info(" pageQueryForModelDTO() begin. current : [{}], rowCount : [{}].", 
                vtlModelDTO.getCurrent(),vtlModelDTO.getRowCount());
    ··· 
}
2.2、Service层方法校验日志
2.2.1、入参校验日志

  对入参进行“空指针”等校验,若不符合条件,则打印错误并抛出异常。

public List<VTLModelDTO> getAllVTLModelDTOByMakeId(VTLModelDTO vtlModelDTO) {
    ···
    // 判断入参是否为空,若不为空,则判断该方法用到的字段是否符合使用条件
    if (null == vtlModelDTO || StringUtils.isBlank(vtlModelDTO.getMakeId())) {
        LOGGER.error(" getAllVTOModelDTOByMakeId() end. arg is not valid.");
        throw new BzException(" 编号为空!");
    }
    ···
}
2.2.2、用户权限校验日志

  对操作用户进行“权限”等校验,若不符合条件,则打印错误并抛出异常。

public List<VTLModelDTO> getAllVTLModelDTOByMakeId(VTLModelDTO vtlModelDTO) {
    ···
    // 判断用户权限
    YxCurrentUserDTO yxCurrentUserDTO = vtlModelDTO.getCurrentUser();
    currentUserUtils.checkAndInitPermission(yxCurrentUserDTO);
    if (null == yxCurrentUserDTO) {
        LOGGER.warn(" getAllVTLModelDTOByMakeId() end. user permission refused. ");
        throw new BzException(" 该用户无此权限! ");
    }
    ···
}
2.3、Service层方法结束日志
2.3.1、返回正常

  若查询结果为某种集合(如:List,Set),则只打印集合内元素数量。

public List<VTLModelDTO> getAllVTLModelDTOByMakeId(VTLModelDTO vtlModelDTO) {
    ···
    List<VTLModelDTO> vtlModelDTOList = new ArrayList<VTLModelDTO>();
    ···
    // 只打印list内元素数量
    LOGGER.info(" getAllVTOModelDTOByMakeId() end. Count of return data : [{}]",
                    vtlModelDTOList.size());
    ···
}

  若返回结果为基本类型等(boolean、String、int、double等),则打印返回结果。

public boolean checkNameExist(VTLModelDTO vtlModelDTO) {
    ···
    boolean result = false;
    ···
    // 将返回结果打印出来
    LOGGER.info(" checkNameExist() end. return data : [{}].", 
                    JsonObjectUtils.objectToJson(result));
    ···
}

  若返回结果为含有多个元素的对象,则只打印有用字段(如显示在页面上的字段)。

public VTLModelDTO getModelDTOByEntityId(VTLModelDTO vtlModelDTO) {
    ···
    VTLModelDTO vtlModelResultDTO = new VTLModelDTO();
    ···
    // 将有用字段打印出来,GETMODELDETOBYENTITYID_OUT即为有用字段
    LOGGER.info(" getModelDTOByEntityId() end. return data : [{}].", 
        VTLJsonObjectUtils.objectToJsonWithContains(vtlModelDTO, 
                VTLModelDTO.class, VTLModelLogArrayDTO.GETMODELDETOBYENTITYID_OUT));
    ···
}
2.3.2、返回异常

  若返回异常,则打印错误信息并抛出异常。·

public List<VTLModelDTO> getAllVTLModelDTOByMakeId(VTLModelDTO vtlModelDTO) {
    ···
    try {
        ···
    } catch (BzException e) {
        LOGGER.error(" getAllVTOModelDTOByMakeId() failed. e : [{}]", e);
        throw new BzException(" 查询失败!");
    }
    ···
}

3、其他

3.1、Assembler层

  assembler层由于不涉及与数据库的交互,原则上不用打印日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值