代码标准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层由于不涉及与数据库的交互,原则上不用打印日志。
阅读全文
0 0
- 代码标准1-日志标准
- python的logging标准日志模块1
- c++标准日志流
- 标准
- 标准
- 标准
- 标准
- 标准
- Html-1-标准的HTML5代码样式
- 一份代码编写标准
- Delphi代码标准文档
- Delphi代码标准文档
- Delphi代码标准文档
- Delphi代码标准文档
- Delphi代码标准文档
- PHP代码优化标准
- 数控机床标准M代码
- 数控机床标准M代码
- React实现jsxGraph 图形试画框
- 理解 Android Build 系统
- Linux中sendmail服务器搭建
- Nginx流量拦截算法
- 5 Java IO:InputStreamReader 和 OutputStreamWriter
- 代码标准1-日志标准
- Python 变量类型
- PAT
- Spring框架学习之二(IOC机制)
- 766B 很水但是有点点启示
- 库?
- Greendao的详细配置和使用(转)
- (一)数据库中手机号字段的设置
- MSP430定时/计数器TimerA中断解惑