python3 logging模塊基本使用方法,解決重複打印及輸出中文亂碼的問題

1、logging模塊使用方法

logger提供了應用程序可以直接使用的接口;

handler將(logger創建的)日誌記錄發送到合適的目的輸出;

filter提供了細度設備來決定輸出哪條日誌記錄;

formatter決定日誌記錄的最終輸出格式。

import logging


logger = logging.getLogger("test")  # 定義對應的程序模塊名name,默認是root
logger.setLevel(logging.DEBUG)  # 指定最低的日誌級別 critical > error > warning > info > debug

consol_haddler = logging.StreamHandler()  # 日誌輸出到屏幕控制檯
consol_haddler.setLevel(logging.INFO)  # 設置日誌等級

#  這裏進行判斷,如果logger.handlers列表爲空,則添加,否則,直接去寫日誌,解決重複打印的問題
if not logger.handlers:
    file_haddler = logging.FileHandler("log.txt",encoding="utf-8")  # 向文件log.txt輸出日誌信息,encoding="utf-8",防止輸出log文件中文亂碼
    file_haddler.setLevel(logging.WARNING)  # 設置輸出到文件最低日誌級別

    formatter = logging.Formatter("%(asctime)s %(name)s- %(levelname)s - %(message)s")
    # %(asctime)s	字符串形式的當前時間。默認格式是 “2003-07-08 16:49:45,896”。逗號後面的是毫秒
    # %(name)s 自定義的模塊名

    consol_haddler.setFormatter(formatter)  # 選擇一個輸出格式,可以定義多個輸出格式
    file_haddler.setFormatter(formatter)

    logger.addHandler(file_haddler)  # 增加指定的handler
    logger.addHandler(consol_haddler)

logger.debug("test1")
logger.info("test2")
logger.warning("test3")
logger.error("test4")

控制檯輸出結果如下圖:

log.txt輸入結果如下圖:

 

這樣寫大家有沒有發現debug及info級別的log在控制檯顯示出來也是紅色,並沒有區分。正常情況下應該顯示不同顏色,比如debug--白色,info--綠色,waining--紅色等等。請看我的下一篇博客。傳送門:https://blog.csdn.net/xugexuge/article/details/87916020

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