1. 日志设计文档
日志记录规约:
- 应当天日志命名。以应用名换.log来保存。例如 user.log 代表是用户相关的日志
- 过往日志命名。以{logname}.log.{保存日期}命名,日期格式为:yyyy-MM-dd。
- 日志文件至少保存15天。便于排查某些以周为频次发生的异常。
- 敏感信息联机存储6个月。网络安全相关法律的规定。
- 日志信息包括:详细的错误信息,异常堆栈信息。
- 日志输出时,应该使用占位符的方式。比如:log.warn("张山退掉了{}到{}的车票", "北京", "上海")
- 禁止直接用JSON将对象直接转为String
- 尽量使用英文了描述日志信息。
- debug,info级别的日志配置打印打开进行控制打印,一般生产不需要这种日志,太多了。
2. 错误码设计
错误码规约:
- 定义时要有字母也要有数字
- 要分级分类管理
- 不能直接输出给用户作为提示信息使用
- 不要与业务架构或者组织架构挂钩
- 使用者避免随意定义新的错误码
- 便于不用语言的开发者之间协作
3. 异常处理
异常处理设计
- 使用全局的
GlobalExceptionHandler进行错误的全局处理在全局异常处理里面有对异常进行封装成指定model返回的逻辑。model的属性信息查看第三点 - 错误转义统一使用:继承于
untimeException的一个自定义异常进行往外抛出,抛出后由全局异常处理器进行统一处理
例如,数据库发生异常,则:new BusinessException(errorCode, errorInfo)进行抛出,由全局异常处理器封装成统一的返回对象进行返回 - 返回的model定义
HttpResultModel { "data“:返回的model信息, "errorCode", 错误编码, "errorInfo":"错误信息", "success":是否返回成功,正常返回用true,错误返回用false } - 业务级别的异常,比如根据实际的业务进行捕获并且根据定义的错误码进行处理