logging 模块和 colorlog 模块

本文介绍了一个结合logging和colorlog模块实现的日志管理系统。该系统不仅能在控制台输出带有颜色的日志,还能将日志信息动态地保存到指定文件中。通过自定义Logger,实现了灵活的日志级别控制和格式配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近写的自动化工具需要日志,使用了 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)

下面是使用的情况

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南野栀子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值