日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

logutils java_简单的日志工具类LogUtils

發布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 logutils java_简单的日志工具类LogUtils 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

包含兩個類,LogUtils 和 LogLevel

1.使用枚舉類來設置日志級別

ALL("全部", 0),INFO("信息", 1),WARN("警告", 2),ERROR("錯誤", 3)

/**

*

* 日志級別 * ALL("全部", 0) * INFO("信息", 1) * WARN("警告", 2) * ERROR("錯誤", 3) *

*? @since 2018年4月9日 9:31:46

*? @author ygr

*/

public enum LogLevel {

ALL("[]", 0), INFO("[INFO]", 1), WARN("[WARN]", 2), ERROR("[ERROR]", 3);

private String name;

private int level;

LogLevel(String name, int level) {

this.name = name;

this.level = level;

}

public String getName() {

return name;

}

public int getLevel() {

return level;

}

/**

*

* 判斷是否允許打印 *

* @author ygr

* @date 2018年4月9日 上午9:36:47

* @param minLevel 最低日志級別

* @return

*/

public boolean isAllow(LogLevel minLevel) {

if (level >= minLevel.getLevel()) {

return true;

}

return false;

}

}

2.打印日志工具類,

2.1 設置是否打印 setEnable(boolean enable);

2.2 打印的級別 setLogLevel(LogLevel level);

/**

*

* 簡單的日志工具類 *

* @since 2018年4月9日 上午9:30:12

* @author ygr

*/

public class LogUtils {

/**

* 默認可以打印

*/

private static boolean enable = true;

/**

* 默認打印所有級別日志

*/

private static LogLevel minLevel = LogLevel.ALL;

/**

* 日期顯示格式

*/

private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");

/**

*

* 設置是否開啟打印 * * * @author ygr * @date 2018年4月9日 上午9:54:46 * @param enable

*/

public static void setEnable(boolean enable) {

LogUtils.enable = enable;

}

/**

*

* 設置日志打印級別 * * * @author ygr * @date 2018年4月9日 上午9:42:09 * @param level

*/

public static void setLogLevel(LogLevel level) {

LogUtils.minLevel = level;

}

/**

*

* 打印消息級別日志 * * * @author ygr * @date 2018年4月9日 上午9:42:59 * @param msg * 待打印消息

*/

public static void info(String msg) {

finalPrint(LogLevel.INFO, msg);

}

/**

*

* 打印警告級別日志 * * * @author ygr * @date 2018年4月9日 上午9:42:59 * @param msg * 待打印消息

*/

public static void warn(String msg) {

finalPrint(LogLevel.WARN, msg);

}

/**

*

* 打印錯誤級別日志 * * * @author ygr * @date 2018年4月9日 上午9:42:59 * @param msg * 待打印消息

*/

public static void error(String msg) {

finalPrint(LogLevel.ERROR, msg);

}

/**

*

* 最終打印日志 * * * @author ygr * @date 2018年4月9日 上午9:50:21 * @param logLevel * 日志級別 * @param msg * 待打印消息

*/

private static void finalPrint(LogLevel logLevel, String msg) {

if (!enable) {

return;

}

if (logLevel.isAllow(minLevel)) {

System.out.printf("%s %s %s\n", formatCurrentTime(), logLevel.getName(), msg);

}

}

/**

*

* 獲取當前時間 * * * @author ygr * @date 2018年4月9日 上午9:49:00 * @return

*/

private static String formatCurrentTime() {

return sdf.format(new Date());

}

}

3.測試代碼

public static void main(String[] args) throws InterruptedException {

LogUtils.info("這是info消息");

LogUtils.warn("這是warn消息");

LogUtils.error("這是error消息");

LogUtils.setEnable(false);

LogUtils.info("這是info消息");

LogUtils.setEnable(true);

Thread.sleep(1000);

LogUtils.setLogLevel(LogLevel.WARN);

LogUtils.info("這是info消息");

LogUtils.warn("這是warn消息");

LogUtils.error("這是error消息");

}

4.高級一點的功能

1、打印日志所在類,所在行數;

2、可設置標記,方便定位;

3、可點擊直接跳轉。

/**

*

* 簡單的日志工具類 * * * @since 2018年4月9日 上午9:30:12 * @author ygr

*/

public class LogUtils {

/**

* 默認可以打印

*/

private static boolean enable = true;

/**

* 默認打印所有級別日志

*/

private static LogLevel minLevel = LogLevel.ALL;

/**

* 默認保存到磁盤

*/

private static boolean persistent = true;

/**

* 日期顯示格式

*/

private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

private static Date date = null;

/**

*

* 設置是否開啟打印 * * * @author ygr * @date 2018年4月9日 上午9:54:46 * @param enable

*/

public static void setEnable(boolean enable) {

LogUtils.enable = enable;

}

/**

*

* 設置是否持久化 * * * @author ygr * @date 2018年4月9日 下午12:47:50 * @param persistent

*/

public static void setPersistent(boolean persistent) {

LogUtils.persistent = persistent;

}

/**

*

* 設置日志打印級別 * * * @author ygr * @date 2018年4月9日 上午9:42:09 * @param level

*/

public static void setLogLevel(LogLevel level) {

LogUtils.minLevel = level;

}

/**

*

* 打印消息級別日志 * * * @author ygr * @date 2018年4月9日 上午9:42:59 * @param msg * 待打印消息

*/

public static void info(String msg) {

finalPrint(LogLevel.INFO, msg);

}

/**

*

* 打印消息級別日志 * * * @author ygr * @date 2018年4月9日 下午3:54:56 * @param msg * 待打印消息 * @param tag * 特殊標記

*/

public static void info(String msg, String tag) {

finalPrint(LogLevel.INFO, msg, tag);

}

/**

*

* 打印警告級別日志 * * * @author ygr * @date 2018年4月9日 上午9:42:59 * @param msg * 待打印消息

*/

public static void warn(String msg) {

finalPrint(LogLevel.WARN, msg);

}

/**

*

* 打印警告級別日志 * * * @author ygr * @date 2018年4月9日 下午3:54:56 * @param msg * 待打印消息 * @param tag * 特殊標記

*/

public static void warn(String msg, String tag) {

finalPrint(LogLevel.WARN, msg, tag);

}

/**

*

* 打印錯誤級別日志 * * * @author ygr * @date 2018年4月9日 上午9:42:59 * @param msg * 待打印消息

*/

public static void error(String msg) {

finalPrint(LogLevel.ERROR, msg);

}

/**

*

* 打印錯誤級別日志 * * * @author ygr * @date 2018年4月9日 下午3:54:56 * @param msg * 待打印消息 * @param tag * 特殊標記

*/

public static void error(String msg, String tag) {

finalPrint(LogLevel.ERROR, msg, tag);

}

/**

*

* 最終打印日志 * * * @author ygr * @date 2018年4月9日 上午9:50:21 * @param logLevel * 日志級別 * @param msg * 待打印消息

*/

private static void finalPrint(LogLevel logLevel, String msg) {

finalPrint(logLevel, msg, null);

}

private static void finalPrint(LogLevel logLevel, String msg, String tag) {

// 不允許打印

if (!enable) {

return;

}

// 允許打印該級別日志

if (logLevel.isAllow(minLevel)) {

StringBuilder builder = new StringBuilder();

builder.append(formatCurrentTime()).append(" ");

// 屬性信息

StackTraceElement traceElement = getStackTraceElement();

if (traceElement != null) {

builder.append("(").append(traceElement.getFileName()).append(":").append(

traceElement.getLineNumber()).append(")").append(" ");

}

// 有特殊標記

if (tag != null && tag.length() != 0) {

builder.append("[").append(tag).append("]").append(" ");

}

// 級別和最終消息

builder.append(logLevel.getName()).append(" ").append(msg);

String message = builder.toString();

System.out.println(message);

// 持久化

if (persistent) {

PersistentUtils.save(message);

}

}

}

/**

*

* 獲取當前時間 * * * @author ygr * @date 2018年4月9日 上午9:49:00 * @return

*/

private static String formatCurrentTime() {

date = new Date();

return sdf.format(date);

}

/**

*

* 獲取打印日志的所屬文件、所在行數等信息 * * * @author ygr * @date 2018年4月9日 下午3:41:10 * @return

*/

private static StackTraceElement getStackTraceElement() {

StackTraceElement[] trace = Thread.currentThread().getStackTrace();

int methodCount = 1;

int stackOffset = getStackOffset(trace);

if (methodCount + stackOffset > trace.length) {

methodCount = trace.length - stackOffset - 1;

}

for (int i = methodCount; i > 0; i--) {

int stackIndex = i + stackOffset;

if (stackIndex >= trace.length) {

continue;

}

StackTraceElement element = trace[stackIndex];

return element;

}

return null;

}

/**

*

* 獲取棧的偏移位置 * * * @author ygr * @date 2018年4月9日 下午3:36:30 * @param trace * @return

*/

private static int getStackOffset(StackTraceElement[] trace) {

for (int i = 2; i < trace.length; i++) {

StackTraceElement e = trace[i];

String name = e.getClassName();

if (!name.equals(LogUtils.class.getName())) {

return --i;

}

}

return -1;

}

}

總結

以上是生活随笔為你收集整理的logutils java_简单的日志工具类LogUtils的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。