日誌管理


練習源碼

日誌管理

  日誌是系統運行過程中後臺的輸出信息,方便程序員進行系統運行的管控以及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日誌輸出格式一覽

發佈了15 篇原創文章 · 獲贊 4 · 訪問量 2505
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章