日志设置
- 日志:“谁在何时何地做了何事”—定义日志对象。
- “何事”:定义用户的动作,“有各种事”。
- 提供创建日志对象的工具类。
//日志对象定义
/**
* 日志信息对象
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LogObject {
/**
* 用户id
*/
private Long UserId;
/**
* 动作类型
*/
private String actionType;
/**
* 当前时间
*/
private Long timestamp;
/**
* 客户端ip地址
*/
private String IP;
/**
* 日志信息
*/
private Object info=null;
}
/**
* 定义用户动作类型
*/
public class LogActionType {
public class ActionType{
/**
* 用户领取优惠券
*/
public static final String ASSIGNED_TEMPLATE="assigned_template";
/**
* 用户消费优惠券
*/
public static final String CONSUME_TEMPLATE="consume_template";
/**
*用户查看优惠券信息
*/
public static final String PASSTEMPLATE_INFO="passtemplate_info";
/**
* 用户查看已使用的优惠券信息
*/
public static final String USED_TEMPLATE_INFO="used_template_info";
/**
* 用户查看未使用的优惠券信息
*/
public static final String UNUSED_TEMPLATE_INFO="UNUSED_TEMPLATE_INFO";
/**
* 用户创建评论
*/
public static final String CREATE_FEEDBACK="CreateFeedback";
/**
* 用户查看评论
*/
public static final String VIEW_FEEDBACK="viewFeedback";
/**
* 用户删除评论等
*/
}
/**
* 日志生成器
*/
@Slf4j//使用日志打印
public class LogGenenrator {
/**
* 生成日志
* @param request 请求信息 获取IP地址
* @param userId 用户id
* @param action 动作类型
* @param info 日志信息
*/
public static void generateLog(HttpServletRequest request,Long userId,String action,Object info){
log.info(
JSON.toJSONString(
new LogObject(userId,action,System.currentTimeMillis(),request.getRemoteAddr(),info)
)
);
}
}
异常定义与处理
- Java异常类基础知识
- 程序中一般对运行时异常(
RuntimeException
)进行捕获处理。 - 自定义异常类:继承
RuntimeException
类,提供构造方法,通过调用父类的构造方法创建实例super(message)
public class OrderException extends RuntimeException {
/**
* 异常码
*/
@Getter
private Integer code;
public OrderException(OrderExceptionEnum orderExceptionEnum){
super(orderExceptionEnum.getMessage());
this.code=orderExceptionEnum.getCode();
}
public OrderException(Integer code,String message){
super(message);
this.code=code;
}
}
"定义异常类枚举"
/**
* 订单异常枚举类定义
*/
public enum OrderExceptionEnum {
PRODUCT_NOT_EXIST(1,"商品不存在"),
PRODUCT_SHORTAGE(2,"库存不足"),
PRODUCT_ORDER_NOT_EXIST(3,"订单不存在"),
PRODUCT_ORDERITEM_NOT_EXIST(4,"订单项不存在"),
ORDER_CANCLE_WRONG(5,"订单已完结或已取消"),
ORDER_CANCLE_FAIL(6,"订单取消失败"),
ORDER_STATUS_WRONG(7,"订单状态错误"),
ORDER_FINISH_FAIL(8,"订单完结失败"),
ORDER_PAY_FAIL(9,"订单支付失败"),
PAY_STATUS_WRONG(10,"支付状态不正确"),
ORDER_PARAM_WRONG(11,"订单参数错误")
;
@Getter
private Integer code;
@Getter
private String message;
OrderExceptionEnum(Integer code,String message){
this.code=code;
this.message=message;
}
}
@ControllerAdvice
public class HandlerException {
@ExceptionHandler(SellerException.class)//需要捕获的异常类
public String handleLoginException(Exception e){
if(e instanceof SellerException){
e.printStackTrace();
return "login";
}
return "";
}
}