python3 logging模塊控制檯輸出日誌不同嚴重層級顯示不同顏色

主要使用到colorama這個庫,以下爲代碼,相關注釋也寫在代碼裏了修改Fore.WHITE即可修改相應的顏色。

如果有不知道怎麼使用logging模塊的,請看我的上一篇博客,傳送門:https://blog.csdn.net/xugexuge/article/details/86169406

import logging
import os.path
import time
from colorama import Fore, Style
import sys


class Logger(object):
    def __init__(self, logger):
        """
        指定保存日誌的文件路徑,日誌級別,以及調用文件
        將日誌存入到指定的文件中
        :param logger:  定義對應的程序模塊名name,默認爲root
        """

        # 創建一個logger
        self.logger = logging.getLogger(name=logger)
        self.logger.setLevel(logging.DEBUG)  # 指定最低的日誌級別 critical > error > warning > info > debug

        # 創建一個handler,用於寫入日誌文件
        rq = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime(time.time()))
        log_path = os.getcwd() + "/logs/"
        log_name = log_path + rq + ".log"
        #  這裏進行判斷,如果logger.handlers列表爲空,則添加,否則,直接去寫日誌,解決重複打印的問題
        if not self.logger.handlers:
            # 創建一個handler,用於輸出到控制檯
            ch = logging.StreamHandler(sys.stdout)
            ch.setLevel(logging.DEBUG)

            # 定義handler的輸出格式
            formatter = logging.Formatter(
                "%(asctime)s - %(filename)s[line:%(lineno)d] - %(name)s - %(message)s")
            ch.setFormatter(formatter)

            # 給logger添加handler
            # self.logger.addHandler(fh)
            self.logger.addHandler(ch)

    def debug(self, msg):
        """
        定義輸出的顏色debug--white,info--green,warning/error/critical--red
        :param msg: 輸出的log文字
        :return:
        """
        self.logger.debug(Fore.WHITE + "DEBUG - " + str(msg) + Style.RESET_ALL)

    def info(self, msg):
        self.logger.info(Fore.GREEN + "INFO - " + str(msg) + Style.RESET_ALL)

    def warning(self, msg):
        self.logger.warning(Fore.RED + "WARNING - " + str(msg) + Style.RESET_ALL)

    def error(self, msg):
        self.logger.error(Fore.RED + "ERROR - " + str(msg) + Style.RESET_ALL)

    def critical(self, msg):
        self.logger.critical(Fore.RED + "CRITICAL - " + str(msg) + Style.RESET_ALL)

if __name__ == '__main__':
    log = Logger(logger="test")
    log.debug("debug")
    log.info("info")
    log.error("error")
    log.warning("warning")
    log.critical("critical")

輸出結果如下圖:

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