基於java.util.logging實現輕量級日誌記錄庫(增加根據當前類class初始化,修復執行緒池模型(javaEE)下的堆棧軌跡順序與當前調用方法不一致問題)
- 2019 年 11 月 1 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/eguid_1/article/details/69935904
前言:
本章介紹自己寫的基於java.util.logging的輕量級日誌記錄庫(baseLog)。
該版本的日誌記錄庫猶如其名,baseLog,是個實現日誌記錄基本功能的小庫,適合小型項目使用,方便快捷,簡單實用,沒有使用緩衝區,日誌寫出操作都是同步操作。
很早就想過要寫兩個日誌記錄器,一個用於大項目(logGuide),解決多執行緒模型下的日誌記錄並發性能問題;一個是基於Java的logging庫寫的簡單同步日誌記錄,適合小項目,簡單、便捷。
之前寫過一個logGuide,該日誌記錄系統沒有使用任何第三方庫,也沒有使用Java自帶的logging庫,並且首次使用了緩衝區來解決由於日誌數量過大導致的項目死鎖問題,後來使用了logback,覺得現在的日誌記錄框架已經很全面了,所以不再繼續寫下去了。
一、實現功能
1、基於java.util.logging
2、四種不同等級的日誌記錄
3、單執行緒下不需要使用當前類的class作為初始化參數,用以提高性能
4、執行緒池模型下必須使用當前類的class作為初始化參數(與其他日誌記錄框架相同)以此來保證日誌記錄中的正確的方法堆棧軌跡
5、基於properties的簡單配置
6、配置支援控制是否開啟控制台、文件的日誌輸出以及日期輸出格式
7、可設置自定義等級的日誌輸出到文件、控制台
二、配置日誌記錄
配置文件名必須為:logconf.properties
#日誌名稱 logName=測試 #是否開啟日誌 log=true #日誌記錄等級 logLevel=all #是否在控制台顯示消息 consoleLog=true #控制台顯示的日誌級別(顯示全部) consoleLogLevel=all #是否開啟日誌文件 fileLog=true #日誌文件記錄等級(全部) fileLogLevel=all #日誌文件路徑 filelogPath=log.log #是否接著上次的文件繼續寫出日誌消息 fileAppend=true #日期格式 dateFormat=yyyy-MM-dd HH:mm:ss
三、日誌的使用
可以使用兩種方式初始化
Logger log=BaseLogger.getLogger(); Logger log2=BaseLogger.getLogger(LogTest.class);
不同等級的日誌可以調用專用的記錄方法也可以調用log()方法來記錄不同等級的日誌
日誌記錄器通用介面:
public void debug(String msg); public void warn(String msg); public void err(String msg); public void info(String msg); public void log(String level, String msg); public void debug(String msg, Throwable thrown); public void warn(String msg, Throwable thrown); public void err(String msg, Throwable thrown); public void info(String msg, Throwable thrown); public void log(String level, String msg, Throwable thrown); public void debug(String className, String methodName,String msg); public void warn(String className, String methodName,String msg); public void err(String className, String methodName,String msg); public void info(String className, String methodName,String msg); public void log(String className, String methodName,String level, String msg); public void debug(String className, String methodName,String msg, Throwable thrown); public void warn(String className, String methodName,String msg, Throwable thrown); public void err(String className, String methodName,String msg, Throwable thrown); public void info(String className, String methodName,String msg, Throwable thrown);
四、項目地址及下載地址
github:稍後
下載地址:http://download.csdn.net/detail/eguid_1/9808783