package com.github.looly.hutool;
import org.slf4j.Logger;
import com.github.looly.hutool.log.LogWrapper;
public class Log {
/**
* 获得Logger
* @param clazz 日志发出的类
* @return Logger
*/
public static LogWrapper get(Class<?> clazz) {
return new LogWrapper(clazz);
}
/**
* 获得Logger
* @param name 自定义的日志发出者名称
* @return Logger
*/
public static LogWrapper get(String name) {
return new LogWrapper(name);
}
/**
* @return 获得日志,自动判定日志发出者
*/
public static LogWrapper get() {
final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
return get(stackTrace[2].getClassName());
}
//----------------------------------------------------------- Logger method start
//------------------------ Trace
/**
* Trace等级日志,小于debug<br>
* 由于动态获取Logger,效率较低,建议在非频繁调用的情况下使用!!
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void trace(String format, Object... arguments) {
trace(innerGet(), format, arguments);
}
/**
* Trace等级日志,小于Debug
* @param log 日志对象
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void trace(Logger log, String format, Object... arguments) {
log.trace(format, arguments);
}
//------------------------ debug
/**
* Debug等级日志,小于Info<br>
* 由于动态获取Logger,效率较低,建议在非频繁调用的情况下使用!!
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void debug(String format, Object... arguments) {
debug(innerGet(), format, arguments);
}
/**
* Debug等级日志,小于Info
* @param log 日志对象
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void debug(Logger log, String format, Object... arguments) {
log.debug(format, arguments);
}
//------------------------ info
/**
* Info等级日志,小于Warn<br>
* 由于动态获取Logger,效率较低,建议在非频繁调用的情况下使用!!
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void info(String format, Object... arguments) {
info(innerGet(), format, arguments);
}
/**
* Info等级日志,小于Warn
* @param log 日志对象
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void info(Logger log, String format, Object... arguments) {
log.info(format, arguments);
}
//------------------------ warn
/**
* Warn等级日志,小于Error<br>
* 由于动态获取Logger,效率较低,建议在非频繁调用的情况下使用!!
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void warn(String format, Object... arguments) {
warn(innerGet(), format, arguments);
}
/**
* Warn等级日志,小于Error
* @param log 日志对象
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void warn(Logger log, String format, Object... arguments) {
log.warn(format, arguments);
}
/**
* Warn等级日志,小于Error<br>
* 由于动态获取Logger,效率较低,建议在非频繁调用的情况下使用!!
* @param e 需在日志中堆栈打印的异常
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void warn(Throwable e, String format, Object... arguments) {
warn(innerGet(), e, StrUtil.format(format, arguments));
}
/**
* Warn等级日志,小于Error
* @param log 日志对象
* @param e 需在日志中堆栈打印的异常
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void warn(Logger log, Throwable e, String format, Object... arguments) {
log.warn(StrUtil.format(format, arguments), e);
}
//------------------------ error
/**
* Error等级日志<br>
* 由于动态获取Logger,效率较低,建议在非频繁调用的情况下使用!!
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void error(String format, Object... arguments) {
error(innerGet(), format, arguments);
}
/**
* Error等级日志<br>
* @param log 日志对象
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void error(Logger log, String format, Object... arguments) {
log.error(format, arguments);
}
/**
* Error等级日志<br>
* 由于动态获取Logger,效率较低,建议在非频繁调用的情况下使用!!
* @param e 需在日志中堆栈打印的异常
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void error(Throwable e, String format, Object... arguments) {
error(innerGet(), e, StrUtil.format(format, arguments));
}
/**
* Error等级日志<br>
* @param log 日志对象
* @param e 需在日志中堆栈打印的异常
* @param format 格式文本,{} 代表变量
* @param arguments 变量对应的参数
*/
public static void error(Logger log, Throwable e, String format, Object... arguments) {
log.error(StrUtil.format(format, arguments), e);
}
/**
* Error等级日志<br>
* @param log 日志对象
* @param e 需在日志中堆栈打印的异常
*/
public static void error(Logger log, Throwable e) {
log.error(e.getMessage(), e);
}
/**
* Error等级日志<br>
* 由于动态获取Logger,效率较低,建议在非频繁调用的情况下使用!!
* @param e 需在日志中堆栈打印的异常
*/
public static void error(Throwable e) {
innerGet().error(e.getMessage(), e);
}
//----------------------------------------------------------- Logger method end
//----------------------------------------------------------- Private method start
/**
* @return 获得日志,自动判定日志发出者
*/
private static LogWrapper innerGet() {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
return get(stackTrace[3].getClassName());
}
//----------------------------------------------------------- Private method end
}