简易日志工具类
依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.7</version>
</dependency>
代码
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.util.StrUtil;
import cn.hutool.system.SystemUtil;
import javax.swing.filechooser.FileSystemView;
/**
* 默认输出到 windows 桌面 log4dev 目录下,以日期命名;
* 配合监视工具实时查看日志;
* @author bo
*/
public class LogPart {
private static String dir;
private static FileWriter fileWriter;
static {
if (shouldWork()){
String desktop = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath();
if (StrUtil.isEmpty(dir)) dir = desktop + "\\log4dev\\";
String date = DateUtil.format(DateUtil.date(), "yyyy-MM-dd");
String fileName = date + ".log";
String path = dir + fileName;
fileWriter = new FileWriter(path);
}
}
public static void log(String format,Object...info){
if (!shouldWork()) return;
try {
String formatLog = formatLog(format, info);
fileWriter.append(formatLog);
} catch (Exception exception) {
exception.printStackTrace();
}
}
private static String formatLog(String format,Object...info){
String dateTime = DateUtil.format(DateUtil.date(), "HH:mm:ss.SSS");
String threadInfo = "[" + Thread.currentThread().getName() + "-" + Thread.currentThread().getId() + "]";
// getStackTrace formatLog log
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
int layer = 3;
if (stackTrace.length - 1 < layer) layer = stackTrace.length - 1;
String className = stackTrace[layer].getClassName();
String methodName = stackTrace[layer].getMethodName();
int lineNumber = stackTrace[layer].getLineNumber();
String logContent = StrUtil.format(format, info);
String log = StrUtil.format("{} {} {}.{}@{} - {}\n"
,dateTime,threadInfo,className,methodName,lineNumber,logContent);
return log;
}
private static boolean shouldWork() {
if (SystemUtil.getOsInfo().isWindows()){
return true;
} else {
return false;
}
}
}
posted on 2022-03-03 12:35 guardianbo 阅读(115) 评论(0) 编辑 收藏 举报