All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.jiangzeyin.common.DefaultSystemLog Maven / Gradle / Ivy

package cn.jiangzeyin.common;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpMethod;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * 系统日志
 *
 * @author jiangzeyin
 * @date 2017/2/3.
 */
public class DefaultSystemLog {
    private static final Logger LOG = LoggerFactory.getLogger(DefaultSystemLog.class);

    private static volatile LogCallback logCallback;

    private DefaultSystemLog() {
    }

    /**
     * 日志类型
     */
    public enum LogType {
        /**
         * 请求
         */
        REQUEST,
        REQUEST_ERROR,
    }

    public static void setLogCallback(LogCallback logCallback) {
        DefaultSystemLog.logCallback = logCallback;
    }

    public static LogCallback getLogCallback() {
        return logCallback;
    }


    /**
     * 获取系统日志
     *
     * @return logger
     */
    public static Logger getLog() {
        return LOG;
    }


    /**
     * 日志回调
     *
     * @since 1.2.34
     */
    public interface LogCallback {

        /**
         * 普通日志
         *
         * @param type 日志类型
         * @param log  日志信息
         */
        void log(LogType type, Object... log);

        /**
         * 请求开始
         *
         * @param request    请求信息
         * @param id         请求id
         * @param url        url
         * @param httpMethod 方法
         * @param ip         ip
         * @param parameters 参数
         * @param header     请求头
         */
        void logStart(HttpServletRequest request, String id, String url, HttpMethod httpMethod, String ip, Map parameters, Map header);

        /**
         * 请求错误
         *
         * @param id     请求id
         * @param status 状态码
         */
        void logError(String id, int status);

        /**
         * 请求超时
         *
         * @param id   请求id
         * @param time 时间
         */
        void logTimeOut(String id, long time);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy