logging模塊內容非常多,這裏只做最簡單的應用,更多內容可以閱讀logging模塊官方文檔
一、日誌級別
日誌等級從低到高分爲:
Debug:調試信息,詳細的信息,通常出現在診斷問題上
INFO:信息,確認一切按預期運行
WARNING(默認):警告,程序運行中發生了預期之外的事情,但是程序依然可以按預期完成工作
ERROR:錯誤,程序無法正常執行完
CRITICAL:極其嚴重,程序可能會中斷,無法繼續執行
二、日誌模塊使用,輸出日誌
可以直接通過logging模塊調用不同的方法實現不同級別日誌信息的打印
logging.info("info信息")
logging.warning("warning信息")
logging.debug("debug信息")
logging.error("error信息")
logging.critical("critical信息")
上面的代碼執行結果可以看到,明明我們調用了5中級別日誌的打印,但是實際輸出了的話只有warning、error和critical三種級別。原因是logging模塊默認設置的日誌級別是warning,而debug和info的級別是低於warning的,所以不會打印這兩種日誌信息。如果我們需要指定顯示的日誌信息的話,我們需要調用basicConfig()方法
語法:
logging.basicConfig(level=logging.DEBUG, # 確定日誌級別
filename="rizhi.log", # 日誌文件名
filemode="w", # 文件操作模式
format="%(asctime)s-%(filename)s[line:%(lineno)d]-%(levelname)s:%(message)s" # 日誌信息顯示格式
)
import logging
logging.basicConfig(level=logging.DEBUG
)
logging.info("info信息")
logging.warning("warning信息")
logging.debug("debug信息")
logging.error("error信息")
logging.critical("critical信息")
如果需要將日誌以指定的格式寫入到日誌文件,則需要制定filename、filemode和format三個參數的值
import logging
logging.basicConfig(level=logging.DEBUG,
filename="rizhi.log",
filemode="w",
format="%(asctime)s-%(filename)s[line:%(lineno)d]-%(levelname)s:%(message)s"
)
logging.info("info信息")
logging.warning("warning信息")
logging.debug("debug信息")
logging.error("error信息")
logging.critical("critical信息")
三、 logger對象的使用,創建日誌文件的同時打印到終端
import logging
# 創建一個logger對象
logger = logging.getLogger()
# 設定log日誌級別
logger.setLevel(logging.INFO)
# 創建一個FileHandler用於創建日誌文件
log_filename = "logrizhi.log"
fp = logging.FileHandler(log_filename, mode="w")
fp.setLevel(logging.DEBUG)
# 創建一個StreamHandler對象用於在控制檯輸出日誌
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)
# 通過Formatter類制定日誌信息格式
formatter = logging.Formatter("%(asctime)s-%(filename)s[line:%(lineno)d]-%(levelname)s:%(message)s")
fp.setFormatter(formatter)
ch.setFormatter(formatter)
# 將日誌文件和控制檯打印的對象添加到logger對象
logger.addHandler(fp)
logger.addHandler(ch)
logging.info("info信息")
logging.warning("warning信息")
logging.debug("debug信息")
logging.error("error信息")
logging.critical("critical信息")