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

cool.linco.common.log.Log Maven / Gradle / Ivy

package cool.linco.common.log;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.LoggerFactory;
import org.slf4j.event.Level;
import org.slf4j.spi.LocationAwareLogger;


/**
 * @author lin
 * 封装基础理论: slf4j也是封装,但是能够定位日志点
 * 原因是日志输出框架通过FQCN参数定位封装类
 * slf4j把自身作为日志输出的FQCN参数, 所以内部能够实现
 * slf4j外部FQCN参数被屏蔽, 无法设置
 * 在slf4j中, Logger的底层类LocationAwareLogger是日志输出过程依赖的类, 此类的log过程能够接受FQCN参数
 * 

* 这个log用于以固定格式输出参数内容, 如果不需要固定形式, 采用原生logger */ public class Log { private final static String LOGINST_FQCN = Log.class.getName(); private String fqcn = LOGINST_FQCN; private final LocationAwareLogger lALogger; private Log(Class clazz) { lALogger = (LocationAwareLogger) LoggerFactory.getLogger(clazz); } public Log setFqcn(String fqcn) { this.fqcn = fqcn; return this; } private Log(String className) { lALogger = (LocationAwareLogger) LoggerFactory.getLogger(className); } public static Log getLog(Class clazz) { return new Log(clazz); } public static Log getLog(String className) { return new Log(className); } public void log(Level level, String logStr) { doOutput(level, logStr, null); } public void log(Level level, String logStr, Throwable throwable) { doOutput(level, logStr, throwable); } public void log(Level level, String logStr, Object... params) { doOutput(level, logStr, null, params); } public void log(Level level, String logStr, Throwable throwable, Object... params) { doOutput(level, logStr, throwable, params); } private void doOutput(Level logLevel, String logStr, Throwable throwable, Object... params) { lALogger.log(null, fqcn, logLevel.toInt(), logStr, params, throwable); } public static boolean isEnabled(Log log, Level logLevel) { boolean flag; if (logLevel == null) { flag = false; } else { switch (logLevel) { case DEBUG: flag = log.lALogger.isDebugEnabled(); break; case INFO: flag = log.lALogger.isInfoEnabled(); break; case WARN: flag = log.lALogger.isWarnEnabled(); break; case ERROR: flag = log.lALogger.isErrorEnabled(); break; case TRACE: flag = log.lALogger.isTraceEnabled(); break; default: flag = log.lALogger.isInfoEnabled(); } } return flag; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy