1. 簡介
本篇主要示範為何使用日志,如何輸出日志,如何設定日志的級别,如何限制各級别的日志的輸出以及如何将日志輸出到檔案。
2. 為何使用日志
使用print()函數輸出調試資訊是非常不正确的,最簡單的原因就是:print()會遍布于程式各處,當程式員不想再輸出調試資訊時,需要一處一處的去查找然後注釋掉print(),非常麻煩。
是以需要注意的是,print()函數實際上是輸出給使用者看到,就如input()是用來接收使用者輸入一樣。
日志卻是用來顯示給程式員看的資訊的,日志資訊可以區分日志資訊的嚴重級别,同時可以輕易的選擇是調試狀态還是運作狀态(可以區分顯示的日志級别)。
3. 如何輸出日志
首先導入日志子產品logging,然後對其進行配置,主要配置日志級别(稍後具體講,日志輸出的格式)。代碼如下:
#導入日志子產品
import logging
#日志子產品配置(DEBUG級别,格式為:時間-級别-消息)
logging.basicConfig(level=logging.DEBUG,format="%(asctime)s-%(levelname)s:%(message)s")
#輸出日志
logging.debug("debug日志")
4. 日志級别
主要有五種,可以通過logging.basicConfig中的level參數修改級别。
DEBUG:小問題,一般在調試時才會使用
INFO:正常運作消息
WARNING:警告,可能有問題
ERROR:錯誤,導緻程式部分處理失敗
CRITICAL:緻命的問題,程式都要完蛋
如果設定級别為DEBUG,則會輸出所有級别日志
如果設定級别為ERROR,則隻會輸出ERROR和更高的CRITICAL級别的日志。
例如:
#導入日志子產品
import logging
#日志子產品配置(級别,格式為:時間-級别-消息)
logging.basicConfig(level=logging.ERROR,format="%(asctime)s-%(levelname)s:%(message)s")
#輸出日志
logging.debug("debug日志")#不會輸出
logging.error("error日志")#會輸出
logging.critical("critical日志")#會輸出
5. 日志禁用
如果在程式都調試完了,準備運作了,隻想輸出CRITICAL級别及以上級别的日志,則可以調用
logging.disable(logging.ERROR)
,該方法的功能是禁用該級别及更低級别的日志。
#導入日志子產品
import logging
#日志子產品配置(級别,格式為:時間-級别-消息)
logging.basicConfig(level=logging.ERROR,format="%(asctime)s-%(levelname)s:%(message)s")
#禁用日志
logging.disable(logging.ERROR)
#輸出日志
logging.debug("debug日志")#不會輸出
logging.error("error日志")#不會輸出
logging.critical("critical日志")#會輸出
6. 将日志輸出到檔案
直接舉例即可,隻是在basicConfig中添加filename參數即可。
#導入日志子產品
import logging
#日志子產品配置(級别,格式為:時間-級别-消息)
logging.basicConfig(filename="C:\\runlog.txt",level=logging.ERROR,format="%(asctime)s-%(levelname)s:%(message)s")
#輸出日志
logging.error("debug日志")