package com.njcn.common.utils;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;

import java.util.List;

/**
 * @author hongawen
 * @version 1.0.0
 * @date  2021年03月25日 16:31
 */
@Slf4j
public class LogUtil {

    /**
     * 将判断是否开启debug模式，抽取单独的方法，必要时查看敏感信息
     *
     * @param log 日志输出器
     */
    public static void njcnDebug(Logger log, String format, Object... args) {
        if (log.isDebugEnabled()) {
            log.info(format, args);
        }
    }

    /**
     * 将判断是否开启debug模式，抽取单独的方法，必要时查看debug级别信息
     * 批量输出堆栈日志信息
     *
     * @param log 日志输出器
     */
    public static void njcnPatchDebug(Logger log, List<String> stackInfos) {
        if (log.isDebugEnabled()) {
            stackInfos.forEach(log::error);
        }
    }


    /**
     * 区分是否开启debug模式，输出系统异常日志信息
     * 若开启debug模式，则输出所有的堆栈信息
     * 否则只输出第一行日志信息
     *
     * @param exception 异常
     */
    public static void logExceptionStackInfo(String exceptionName, Exception exception) {
        //若开启了debug模式，则输出所有的栈堆信息
        njcnPatchDebug(log, ExceptionUtil.getAllExceptionStackInfo(exception));
        log.error("{}{},目标文件：{}",exceptionName, exception, ExceptionUtil.getExceptionServerStackInfo(exception));
    }

}
