mirror of
https://gitee.com/yadong.zhang/JustAuth.git
synced 2025-12-07 09:18:27 +08:00
151 lines
3.7 KiB
Java
151 lines
3.7 KiB
Java
package me.zhyd.oauth.log;
|
||
|
||
import lombok.AllArgsConstructor;
|
||
import lombok.Getter;
|
||
|
||
import java.io.PrintStream;
|
||
import java.time.LocalDateTime;
|
||
import java.time.format.DateTimeFormatter;
|
||
|
||
/**
|
||
* 针对JustAuth提供的轻量级的日志打印工具
|
||
*
|
||
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
|
||
* @see Log#debug(String)
|
||
* @see Log#debug(String, Throwable)
|
||
* @see Log#warn(String)
|
||
* @see Log#warn(String, Throwable)
|
||
* @see Log#error(String)
|
||
* @see Log#error(String, Throwable)
|
||
* @since 1.10.0
|
||
*/
|
||
public class Log {
|
||
|
||
public static void debug(String msg) {
|
||
debug(msg, null);
|
||
}
|
||
|
||
public static void warn(String msg) {
|
||
warn(msg, null);
|
||
}
|
||
|
||
public static void error(String msg) {
|
||
error(msg, null);
|
||
}
|
||
|
||
public static void debug(String msg, Throwable t) {
|
||
print(Level.DEBUG, msg, t, System.out);
|
||
}
|
||
|
||
public static void warn(String msg, Throwable t) {
|
||
print(Level.WARN, msg, t, System.out);
|
||
}
|
||
|
||
public static void error(String msg, Throwable t) {
|
||
print(Level.ERROR, msg, t, System.err);
|
||
}
|
||
|
||
/**
|
||
* 打印日志内容,格式:2019-08-02 20:44:07 main me.zhyd.oauth.log.Log(debug:39) [DEBUG] - xxxx
|
||
*
|
||
* @param level 日志级别
|
||
* @param msg 日志内容
|
||
* @param t 异常信息
|
||
* @param ps 实际执行打印的PrintStream
|
||
*/
|
||
private static void print(Level level, String msg, Throwable t, PrintStream ps) {
|
||
if (Config.enable) {
|
||
if (level.getLevelNum() >= Config.level.getLevelNum()) {
|
||
ps.println(String.format("%s %s %s [%s] - %s", getDate(), Thread.currentThread().getName(), getCaller(), level, msg));
|
||
writeThrowable(t, ps);
|
||
ps.flush();
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取调用方的信息
|
||
*
|
||
* @return 返回调用方的信息,格式:class(method:lineNumber)
|
||
*/
|
||
private static String getCaller() {
|
||
int offset = 2;
|
||
StackTraceElement[] stackTraceArr = (new Throwable()).getStackTrace();
|
||
StackTraceElement stackTrace = null;
|
||
if (offset >= stackTraceArr.length) {
|
||
offset = offset - 1;
|
||
}
|
||
stackTrace = stackTraceArr[offset];
|
||
return stackTrace.getClassName() +
|
||
"(" +
|
||
stackTrace.getMethodName() +
|
||
':' +
|
||
stackTrace.getLineNumber() +
|
||
")";
|
||
}
|
||
|
||
/**
|
||
* 获取格式化后的日期
|
||
*
|
||
* @return string
|
||
*/
|
||
private static String getDate() {
|
||
return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||
}
|
||
|
||
/**
|
||
* 打印异常信息
|
||
*
|
||
* @param t 异常
|
||
* @param targetStream 实际执行打印的PrintStream
|
||
*/
|
||
private static void writeThrowable(Throwable t, PrintStream targetStream) {
|
||
if (t != null) {
|
||
t.printStackTrace(targetStream);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 日志级别
|
||
*
|
||
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
|
||
* @since 1.10.0
|
||
*/
|
||
@Getter
|
||
@AllArgsConstructor
|
||
public enum Level {
|
||
/**
|
||
* DEBUG: 普通级别
|
||
*/
|
||
DEBUG(10),
|
||
/**
|
||
* WARN: 警告级别
|
||
*/
|
||
WARN(30),
|
||
/**
|
||
* ERROR: 异常级别
|
||
*/
|
||
ERROR(40);
|
||
|
||
private int levelNum;
|
||
}
|
||
|
||
/**
|
||
* 日志配置
|
||
*
|
||
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
|
||
* @since 1.10.0
|
||
*/
|
||
public static class Config {
|
||
|
||
/**
|
||
* 需要打印的日志级别
|
||
*/
|
||
public static Level level = Level.DEBUG;
|
||
/**
|
||
* 是否启用日志打印功能,默认启用
|
||
*/
|
||
public static boolean enable = true;
|
||
}
|
||
}
|