logging 模块和 colorlog 模块

 最近写的自动化工具需要日志,使用了 logging 模块和 colorlog 模块,塑造了颜色丰富的控制台输出,非常喜欢。

我在代码中,通过对 logging 模块的 logger 进行自己的定制,得到我想要的 logger,既能在控制台彩色输出,也能在我指定的文件中动态存储日志信息。

import os
import sys
import platform
import sys,ctypes
import logging
import colorlog
from smb.SMBConnection import SMBConnection

Log_File = 'athena_log.log'
exit_word = r' Athena run exit! Athena run exit! Athena run exit!'.center(115,"*")
Athena_Version = "0.9_20220916"
GUI_CMD = "CMD"

Debug = False


def isadmin():
    if(ctypes.windll.shell32.IsUserAnAdmin()==1):
        return(True)
    else:
        return(False)

class LogHandler(object):
    def __init__(self, filename, level=logging.INFO):
        self.logger = logging.getLogger(filename)
        self.log_colors_config = {
            'DEBUG': 'cyan',
            'INFO': 'green',
            'WARNING': 'yellow',
            'ERROR': 'red',
            'CRITICAL': 'red',
        }
        formatter = colorlog.ColoredFormatter(
            '%(log_color)s%(asctime)s  %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s',
            log_colors=self.log_colors_config)

        # 设置日志级别
        self.logger.setLevel(level)
        # 往屏幕上输出
        console_handler = logging.StreamHandler()

        # 输出到日志文件
        if(isadmin()):
            file_handler = logging.FileHandler(filename=filename, mode='a', encoding='utf8')
            file_formatter = logging.Formatter('%(asctime)s  %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s')
            # 设置写入文件的格式
            file_handler.setFormatter(file_formatter)

        # 设置屏幕上显示的格式
        console_handler.setFormatter(formatter)


        # 把对象加到logger里
        self.logger.addHandler(console_handler)
        if(isadmin()):
            self.logger.addHandler(file_handler)

my_loghandler = LogHandler(Log_File, level=logging.DEBUG)


def get_logger():
    return (my_loghandler)

下面是使用的情况

logging 模块和 colorlog 模块_第1张图片

 

你可能感兴趣的:(#,Python,第三方模块,javascript,开发语言,ecmascript)