167 lines
4.3 KiB
Java
167 lines
4.3 KiB
Java
package com.lz.common.utils;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import java.io.IOException;
|
|
import java.io.PrintWriter;
|
|
import java.io.StringWriter;
|
|
|
|
|
|
/****
|
|
* 日志工具类,升级版
|
|
*/
|
|
|
|
@Slf4j
|
|
public class LogUtils {
|
|
|
|
|
|
/**
|
|
* 不需要传递参数
|
|
*
|
|
* @param msg
|
|
*/
|
|
public static void info(String msg) {
|
|
log.info(msg);
|
|
}
|
|
|
|
/**
|
|
* 不需要传递参数
|
|
*
|
|
* @param msg
|
|
*/
|
|
public static void all(String msg) {
|
|
Throwable throwable = new Throwable();
|
|
StringBuffer sb = getStringBuffer(msg, throwable, -1);
|
|
log.info(sb.toString());
|
|
}
|
|
|
|
/**
|
|
* 不需要传递参数
|
|
*
|
|
* @param msg
|
|
*/
|
|
public static void info(String msg, int level) {
|
|
Throwable throwable = new Throwable();
|
|
StringBuffer sb = getStringBuffer(msg, throwable, level);
|
|
|
|
log.info(sb.toString());
|
|
}
|
|
|
|
public static void error(Exception e) {
|
|
Throwable throwable = new Throwable();
|
|
StringBuffer sb = getStringBuffer("", throwable, getLevel(throwable));
|
|
log.error(sb.append("error=").toString(), e);
|
|
}
|
|
|
|
public static void error(String msg, Exception e) {
|
|
Throwable throwable = new Throwable();
|
|
StringBuffer sb = getStringBuffer(msg, throwable, getLevel(throwable));
|
|
log.error(sb.append("error=").toString(), e);
|
|
}
|
|
|
|
public static int getLevel(Throwable throwable) {
|
|
return throwable.getStackTrace().length - 1;
|
|
}
|
|
|
|
private static StringBuffer getStringBuffer(String msg, Throwable throwable, int level) {
|
|
StringBuilder cml = getRelate(throwable, level);
|
|
String result = cml.toString().trim();
|
|
if (result.endsWith("=>")) {
|
|
result = result.substring(0, result.lastIndexOf("=>"));
|
|
}
|
|
StringBuffer sb = appendSb(" ", result, " ", msg);
|
|
return sb;
|
|
}
|
|
|
|
public static StringBuilder getRelate(Throwable throwable, int level) {
|
|
StringBuilder cml = new StringBuilder();
|
|
if (level <= 0 || level >= throwable.getStackTrace().length) {
|
|
level = throwable.getStackTrace().length - 1;
|
|
}
|
|
|
|
getLationByN(throwable, cml, level);
|
|
return cml;
|
|
}
|
|
|
|
private static void getLationByN(Throwable throwable, StringBuilder cml, int n) {
|
|
for (int i = n; i > 0; i--) {
|
|
getNLation(throwable, cml, i);
|
|
cml.append(" => ");
|
|
}
|
|
}
|
|
|
|
private static void getNLation(Throwable throwable, StringBuilder cml, int i) {
|
|
String method = throwable.getStackTrace()[i].getMethodName();
|
|
|
|
cml.append(method);
|
|
cml.append(":");
|
|
cml.append(getClassName(throwable.getStackTrace()[i].getClassName()));
|
|
cml.append(":");
|
|
cml.append(throwable.getStackTrace()[i].getLineNumber());
|
|
|
|
}
|
|
|
|
|
|
public static String dealException(Exception e) {
|
|
StringWriter sw = null;
|
|
String str = null;
|
|
try {
|
|
e.printStackTrace();
|
|
sw = new StringWriter();
|
|
//将出错的栈信息输出到printWriter中
|
|
e.printStackTrace(new PrintWriter(sw, true));
|
|
str = sw.toString();
|
|
sw.flush();
|
|
} finally {
|
|
if (sw != null) {
|
|
try {
|
|
sw.close();
|
|
} catch (IOException e1) {
|
|
e1.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
return str;
|
|
}
|
|
|
|
|
|
public static String getClassName(String className) {
|
|
if (isNotBlank(className) && className.contains(".")) {
|
|
String classNames[] = className.split("\\.", className.length());
|
|
if (classNames != null && classNames.length > 0) {
|
|
return classNames[classNames.length - 1];
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
|
|
|
|
public static boolean isNotBlank(String str) {
|
|
return !isBlank(str);
|
|
}
|
|
|
|
public static boolean isBlank(String str) {
|
|
if (str == null)
|
|
return true;
|
|
if (str.length() == 0 || str.equals("null"))
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
|
|
/**
|
|
* 通过StringBuffer来组装字符串
|
|
*
|
|
* @param strings
|
|
* @return
|
|
*/
|
|
public static StringBuffer appendSb(Object... strings) {
|
|
StringBuffer sb = new StringBuffer();
|
|
for (Object str : strings) {
|
|
sb.append(str);
|
|
}
|
|
return sb;
|
|
}
|
|
|
|
}
|