日志封装

本文详细介绍了一个自定义日志模块的设计与实现过程,包括如何使用Python的logging库创建日志收集器,设置日志级别,指定日志格式,以及将日志输出至控制台和文件的具体方法。

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

创建一个log.py文件

'''日志模块'''
import logging
import time
from PO.Common.contants import Open

class MyLog ():
    def __init__(self, logging_name=''):
        self.logging = logging_name  # 日志收集名字,默认为空
    def my_log(self, msg, levl):
        # leve:用来选择日志输出格式,默认DEBUG
        # msg:用来编写输入的内容

        # 新建一个日志收集器
        my_logger = logging.getLogger (self.logging)  # 日志收集器名字
        my_logger.setLevel ('DEBUG')  # 设定收集的级别

        # 指定格式
        fm = logging.Formatter ('%(asctime)s -  %(name)s - %(levelname)s - %(message)s - [%(filename)s:%(lineno)d ]')

        # 新建一个输出渠道并指定到控制台,输出的级别为DEBUG
        ch = logging.StreamHandler ()
        ch.setLevel ('DEBUG')
        ch.setFormatter (fm)

        # 创建api_log+时间命名的文本名称
        now = time.strftime ('%Y-%m-%d %H-%M')  # 获取当前时间,精确到分
        filename = Open.log () + 'api_log' + now + '.txt'  #Open.log()这里不想要的话,可以改成自己的绝对路径或者相对路径
        # 创建存放的路径
        file_handler = logging.FileHandler (filename, encoding='utf-8')
        file_handler.setLevel ('DEBUG')  # 指定输出级别
        file_handler.setFormatter (fm)

        # 对接
        my_logger.addHandler (ch)
        my_logger.addHandler (file_handler)

        if levl.upper () == 'DEBUG':
            my_logger.debug (msg)
        elif levl.upper () == 'INFO':
            my_logger.info (msg)
        elif levl.upper () == 'WARNING':
            my_logger.warning (msg)
        elif levl.upper () == 'ERROR':
            my_logger.error (msg)
        elif levl.upper () == 'CRITICAL':
            my_logger.critical (msg)

        # 移除输出格式和存放路径,避免重复输出
        my_logger.removeHandler (ch)
        my_logger.removeHandler (file_handler)

        # 关闭文件
        file_handler.close ()

    def debug(self, msg):
        self.my_log (msg, 'DEBUG')

    def info(self, msg):
        self.my_log (msg, 'INFO')

    def warning(self, msg):
        self.my_log (msg, 'WARNING')

    def error(self, msg):
        self.my_log (msg, 'ERROR')

    def critical(self, msg):
        self.my_log (msg, 'CRITICAL')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值