logging模組是python的乙個標準庫模組,由標準庫模組提供日誌記錄api的關鍵好處是所有python模組都可以使用這個日誌記錄功能。所以,你的應用日誌可以將你自己的日誌資訊與來自第三方模組的資訊整合起來。
1.日誌級別
logging模組預設定義了以下幾個日誌等級,開發應用程式或部署開發環境時,可以使用debug或info級別的日誌獲取盡可能詳細的日誌資訊來進行開發或部署除錯;應用上線或部署生產環境時,應該使用warning或error或critical級別的日誌來降低機器的i/o壓力和提高獲取錯誤日誌資訊的效率。日誌級別的指定通常都是在應用程式的配置檔案中進行指定的。
日誌等級(level)
等級數值
描述debug
10最詳細的日誌資訊,典型應用場景是 問題診斷
info
20資訊詳細程度僅次於debug,通常只記錄關鍵節點資訊,用於確認一切都是按照我們預期的那樣進行工作
warning
30當某些不期望的事情發生時記錄的資訊(如,磁碟可用空間較低),但是此時應用程式還是正常執行的
error
40由於乙個更嚴重的問題導致某些功能不能正常執行時記錄的資訊
critical/fatal
50當發生嚴重錯誤,導致應用程式不能繼續執行時記錄的資訊
示例:
import logging
logging.
debug
("this is a debug log."
)logging.
info
("this is a info log."
)logging.
warning
("this is a warning log."
)logging.
error
("this is a error log."
)logging.
critical
("this is a critical log."
)
輸出:
warning
:root:this is a warning log.
error
:root:this is a error log.
critical
:root:this is a critical log.
logging模組提供的日誌記錄函式所使用的日誌器設定的日誌級別是warning,因此只有warning級別的日誌記錄以及大於它的error和critical級別的日誌記錄被輸出了,而小於它的debug和info級別的日誌記錄被丟棄了。2.日誌基本設定預設輸出格式:日誌級別:日誌器名稱:日誌內容
logging.basicconfig(**kwargs)
,該方法用於為logging日誌系統做一些基本配置,方法定義如下:
引數名稱
描述filename
指定日誌輸出目標檔案的檔名,指定該設定項後日誌信心就不會被輸出到控制台了
filemode
指定日誌檔案的開啟模式,預設為』a』。需要注意的是,該選項要在filename指定時才有效
format
指定日誌格式字串,即指定日誌輸出時所包含的字段資訊以及它們的順序。logging模組定義的格式字段下面會列出。
datefmt
指定日期/時間格式。需要注意的是,該選項要在format中包含時間欄位%(asctime)s時才有效
level
指定日誌器的日誌級別
stream
指定日誌輸出目標stream,如sys.stdout、sys.stderr以及網路stream。需要說明的是,stream和filename不能同時提供,否則會引發 valueerror異常
style
python 3.2中新新增的配置項。指定format格式字串的風格,可取值為』%』、』-\d-\d.log$」)。
預設情況下,在timedrotatingfilehandler物件初始化時,suffxi和extmatch會根據when的值進行初始化:
suffix
extmatch
『s』: suffix=」%y-%m-%d_%h-%m-%s」
r」^d-\d-\d_\d-\d-\d」;
『m』:suffix=」%y-%m-%d_%h-%m」
r」^\d-\d-\d_\d-\d」;
『h』:suffix=」%y-%m-%d_%h」
r」^\d-\d-\d_\d」;
『d』:suffxi=」%y-%m-%d」
r」^\d-\d-\d」;
『midnight』:」%y-%m-%d」
r」^\d-\d-\d」;
『w』:」%y-%m-%d」
r」^\d-\d-\d」;
如果對日誌檔名沒有特殊要求的話,可以不用設定suffix和extmatch,如果需要,一定要讓它們匹配上。
rotatingfilehandler按照大小進行日誌記錄,,建構函式定義如下:
rotatingfilehandler
(filename [
,maxbytes [
,backupcount]
])
filename
是輸出日誌檔名的字首,比如「rotating」
maxbytes
是指單個日誌檔案的最大位元組數,如果超過了就會生成新的日誌檔案。
backupcount
是保留日誌個數。預設的0是不會自動刪除掉日誌。若設3,則在檔案的建立過程中庫會判斷是否有超過這個3,若超過,則會從最先建立的開始刪除。
示例:
import time, logging.handlers, re
logger = logging.
getlogger()
logger.
setlevel
(logging.
info
)// timedrotatingfilehandler,1秒換1次日誌檔案,保留3個
time_hdl = logging.handlers.
timedrotatingfilehandler
("time"
, when=
"s", interval=
1, backupcount=3)
// time_hdl.suffix = "%y-%m-%d_%h-%m-%s.log"
// time_hdl.extmatch = re.compile(r"\^d-\d-\d_\d-\d-\d.log$")
logger.
addhandler
(time_hdl)
// rotatingfilehandler,最大生成100位元組的日誌檔案,保留5個
rotating_hdl = logging.handlers.
rotatingfilehandler
("rotating.log"
, maxbytes=
100, backupcount=5)
logger.
addhandler
(rotating_hdl)
while true:
time.
sleep
(0.1
) logger.
info
("test"
)
參考:
Python logging日誌模組
1.日誌的級別 日誌一共分成5個等級,從低到高分別是 1 debug 2.info 3.warning 4.error 5.critical說明 這5個等級,也分別對應5種打日誌的方法 debug info warning error critical。預設的是 warning,當在warning或...
python logging日誌設定
log等級,輸出格式,輸出檔名,檔案讀寫模式 logging.basicconfig level logging.debug,format asctime s filename s line lineno d levelname s message s filename log.txt filemo...
python logging日誌記錄
import logging from logging.handlers import rotatingfilehandler,timedrotatingfilehandler 建立日誌記錄者 logger logging.getlogger test logger 日誌記錄等級 logger.se...