python之logging模塊的使用

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信息")

 

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