统一结果处理,统一异常处理,统一日志处理

统一结果处理

在前后端分离的项目中,我们需要后端返回json数据,往往我们采用统一结果的封装的方式,方便前端处理
我们需要两个类,一个枚举类封装状态和消息,一个结果类封装数据

@Getter
public enum ResultCode {
    SUCCESS(200,"成功"),
    FAIL(201,"错误");
    private  final Integer code;
    private  final String msg;

    ResultCode(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}
@Data
public class Result {
    private Integer code;
    private String msg;
    private Object data;
    public static Result success(Object data){
        Result result = new Result();
        result.setCode(ResultCode.SUCCESS.getCode());
        result.setMsg(ResultCode.SUCCESS.getMsg());
        result.setData(data);
        return result;

    }
}

这里只是简单写了下,主要是提供个思路,实际中ResultCode枚举类应该是非常丰富的,可以定义成功,失败,没有权限,密码错误等等。

统一异常处理

//@ControllerAdvice是一个加强的Controller而@RestControllerAdvice表明结果为json数据
@RestControllerAdvice
public class GlobalException{
    @ExceptionHandler(Exception.class)//指明异常的类型
    public Result error(Exception e){
        return Result.failed(e);
    }
}

需要注意的是系统异常会自动抛出,如果是自己定义的异常需要手动抛出异常

统一日志处理

springboot默认使用Logback进行日志处理
日志级别有(从高到低):FATAL(致命),ERROR(错误),WARN(警告),INFO(信息),DEBUG(调试),TRACE(跟踪)或者 OFF(关闭),默认的日志配置在消息写入时将消息回显到控制台。默认情况下,将记录错误级别、警告级别和信息级别的消息。可以修改配置文件更改

logging.level.root=WARN

默认是只在控制台输出日志,也可以设置输出到文件中

logging.path=
logging.path.file=

我们如何在指定位置打印日志呢?
方法一:
获取日志对象,打印日志

private final Logger log = LoggerFactory.getLogger(this.getClass()); //this.getClass()代表传入当前类
log.info("msg");

方法二:
通过lombok的@Slf4j,自动创建日志对象,对象名就为log

posted @ 2021-04-28 13:24  刚刚好。  阅读(248)  评论(0)    收藏  举报