package com.njcn.web.service;

import com.njcn.common.pojo.response.HttpResult;
import org.springframework.core.MethodParameter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.scheduling.annotation.Async;

import javax.servlet.http.HttpServletRequest;

/**
 * @author hongawen
 * @version 1.0.0
 * @date 2022年03月14日 16:37
 */
public interface ILogService {

    /**
     * 异步记录controller中返回的信息内容
     *
     * @param request        请求头
     * @param returnType     返回类型
     * @param httpResult     返回结果
     * @param methodDescribe 方法描述
     */
    void recodeAdviceLog(ServerHttpRequest request, MethodParameter returnType, HttpResult httpResult, String methodDescribe);


    /**
     * 异步记录全局异常捕获器中返回的信息内容
     *
     * @param exception 异常数据
     * @param request   请求信息
     * @param message   信息
     */
    void recodeBusinessExceptionLog(Exception exception, HttpServletRequest request, String message);

    /**
     * 异步记录全局异常捕获器中返回的信息内容
     *
     * @param exception 异常数据
     * @param request   请求信息
     * @param message   信息
     * @param userName  用户名
     */
    void recodeAuthExceptionLog(Exception exception, HttpServletRequest request, String message, String userName);

}
