代码标准1-日志标准

来源:互联网 发布:sql exist 编辑:程序博客网 时间:2024/04/28 02:35

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层由于不涉及与数据库的交互,原则上不用打印日志。

原创粉丝点击