使用logging封裝日誌

自己封裝的logging,封裝日誌的幾個組件
Logger 記錄器暴露了應用程序代碼直接使用的接口。

Handler 處理器將日誌記錄(由記錄器創建)發送到適當的目標。

Filter 過濾器提供了更細粒度的功能,用於確定要輸出的日誌記錄。

Formatter 格式器指定最終輸出中日誌記錄的樣式。

日誌等級說明:
DEBUG:程序調試bug時使用
INFO:程序正常運行時使用
WARNING:程序未按預期運行時使用,但並不是錯誤,如:用戶登錄密碼錯誤
ERROR:程序出錯誤時使用,如:IO操作失敗
CRITICAL:特別嚴重的問題,導致程序不能再繼續運行時使用,如:磁盤空間爲空,一般很少使用
默認的是WARNING等級,當在WARNING或WARNING之上等級的才記錄日誌信息。 日誌等級從低到高的順序是: DEBUG < INFO < WARNING < ERROR < CRITICAL

 

 1 import logging
 2 
 3 
 4 def mylog():
 5     # 創建日誌器
 6     logger = logging.getLogger()
 7     # 設置日誌級別
 8     logger.setLevel(logging.WARNING)
 9 
10     # 防止重複寫日誌,這裏進行判斷,若logger.handlers列表爲空則添加
11     if not logger.handlers:
12         # 創建控制檯處理器
13         sh = logging.StreamHandler()
14         # 將控制檯處理器放到日誌器中
15         logger.addHandler(sh)
16 
17         # 創建文件處理器
18         fh = logging.FileHandler('log4.txt', encoding='utf-8')
19         # 將文件處理器放到日誌器中
20         logger.addHandler(fh)
21 
22         # 根據格式,創建格式器
23         fmt1 = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
24         formatter1 = logging.Formatter(fmt1)
25         fmt2 = "%(asctime)s - %(filename)s - %(levelname)s: %(message)s"
26         formatter2 = logging.Formatter(fmt2)
27 
28         # 給控制檯處理器設置格式
29         sh.setFormatter(formatter1)
30         # 給文件處理器設置格式
31         fh.setFormatter(formatter2)
32 
33     return logger
34 
35 
36 mylog().debug("this is a debug msg")
37 mylog().info("this is a info msg")
38 mylog().warning("this is a warning msg")
39 mylog().error("this is a error msg")
40 mylog().critical("this is a critical msg")
View Code

 

控制檯輸出:

 

 

日誌文件的輸出:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章