練習源碼
日誌管理
日誌是系統運行過程中後臺的輸出信息,方便程序員進行系統運行的管控以及Bug的查找。
傳統方式日誌管理
獲取日誌
使用System.out.println()語句進行控制檯打印。
存在問題
1 日誌無法保存
2 日誌顯示不完整(控制檯有限)
3 日誌顯示沒有級別和篩選,所有日誌混雜在一起
4 日誌顯示格式不友好
解決方法
使用log4j進行日誌管理。
log4j日誌管理
log4j是一個日誌輸出的插件,專門用來日誌的管理。
特點
1 日誌既可以在控制檯打印,也可以保存在文件中
2 日誌可以完整獲取
3 日誌可以分級管理篩選
4 日誌格式可以自定義,顯示友好
使用流程
1 導入log4j的jar包
2 配置log4j的配置文件
配置文件名必須爲log4j.properties
必須放在src文件夾下
3 在使用log4j的類中聲明全局的Logger對象
public static Logger logger = Logger.getLogger(類名.class);
4 使用Logger對象調用日誌方法進行日誌輸出語句聲明
// 以下日誌級別由低到高
logger.debug("我是調試信息(代碼級別)"); // 一般在方法內部調用
logger.info("我是info信息(方法級別)"); // 一般在調用方法時使用
logger.warn("我是警告信息"); // 一般在需要警告的位置使用
logger.error("我是錯誤信息"); // 一般在catch代碼塊調用異常方法前使用
logger.fatal("我是致命的錯誤信息"); // 一般在catch代碼塊調用異常方法前使用
配置文件
# 設置全局默認配置
# INFO指打印INFO及其以上級別的日誌
# CONSOLE, LOGFILE指打印位置爲控制檯和日誌文件
log4j.rootCategory = INFO, CONSOLE, LOGFILE
# 設置某個包、某個類或某個方法的日誌打印級別和位置(優先於全局配置)
log4j.logger.包名 = WARN, CONSOLE, LOGFILE
log4j.logger.包名.類名 = ERROR, CONSOLE, LOGFILE
log4j.logger.包名.類名.方法名 = FATAL, CONSOLE, LOGFILE
# 設置控制檯日誌打印方式
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender # 啓動控制檯打印日誌
log4j.appender.CONSOLE.Threshold = debug # 設置控制檯打印日誌級別
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout # 啓動控制檯打印日誌格式設置
log4j.appender.CONSOLE.layout.ConversionPattern = %m%n # 設置控制檯打印日誌格式
# 設置文件輸出配置
log4j.appender.LOGFILE = org.apache.log4j.FileAppender # 啓動文件打印日誌
log4j.appender.LOGFILE.File = D:/test.log # 設置日誌文件保存位置
log4j.appender.LOGFILE.Append = true # 設置是否以追加形式打印日誌
log4j.appender.LOGFILE.Threshold = debug # 設置文件打印日誌級別
log4j.appender.LOGFILE.layout = org.apache.log4j.PatternLayout # 啓動文件打印日誌格式設置
log4j.appender.LOGFILE.layout.ConversionPattern = %p-%d{yyyy/MM/dd hh:mm:ss}-%l-%m%n # 設置文件打印日誌格式
日誌格式
# 如%5p-%d{yyyy/MM/dd hh:mm:ss}-%l-[%t]%m%n格式對應以下日誌:
DEBUG-2020/02/18 04:50:37-MyLog.main(MyLog.java:14)-[main]我是調試信息(代碼級別)
INFO-2020/02/18 04:50:37-MyLog.main(MyLog.java:15)-[main]我是info信息(方法級別)
INFO-2020/02/18 04:50:37-MyLog.main(MyLog.java:16)-[main]我是警告信息
ERROR-2020/02/18 04:50:37-MyLog.main(MyLog.java:17)-[main]我是錯誤信息
FATAL-2020/02/18 04:50:37-MyLog.main(MyLog.java:18)-[main]我是致命的錯誤信息
# 說明:
%後可以加寬度
%p:日誌級別,DEBUG、INFO、INFO、ERROR、FATAL
%d:日期,默認格式爲ISO8601,也可自定義格式,如%d{yyyy/MM/dd hh:mm:ss}
%r:輸出自應用啓動到輸出該日誌信息所耗費的毫秒數
%l:指明所屬類名、方法名和所在行,如MyLog.main(MyLog.java:14)
%c:指明所屬類名,如MyLog
%F:指明所屬類名,如MyLog.java
%t:指明所屬線程
%m:指定的日誌信息
%n:換行
參考
尚學堂視頻教程
log4j日誌輸出格式一覽