python 通过装饰器实现类的日志记载

本文详细介绍了Python中logging模块的使用方法,包括如何设置日志级别、格式化日志输出、将日志写入文件等。通过一个具体的类实例展示了如何在类中绑定日志功能,使日志记录更加灵活和方便。

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

import logging
from logging import FileHandler, Formatter
import os.path as fpath
from datetime import datetime
logfile = fpath.join(fpath.dirname(fpath.abspath(__file__)),datetime.now().strftime('%Y%m%d') + '.log')

formatter = '%(asctime)s %(levelname)-8s %(name)-15s %(funcName)s %(message)s'
dateformatter = '%Y-%m-%d %H:%M:%S'
default_level = {
    'critical': 50,
    'error': 40,
    'warning': 30,
    'info': 20,
    'debug': 10
}


def bindlog(level = 'debug'):
    def wrapper(cls):
        print(cls)
        logger = logging.getLogger(cls.__name__)
        logger.setLevel(default_level[level])
        file_handle = FileHandler(logfile)
        file_handle.setFormatter(Formatter(formatter, dateformatter))
        logger.addHandler(file_handle)        
        def inner(*args, **kwargs):
            if not hasattr(cls, 'log'):
                setattr(cls, 'log', logger)
            return(cls(*args, **kwargs))
        return inner            
    return wrapper
    

@bindlog()
class Test:
    
    
    def add(self):
        for _ in range(100):
            
            self.log.info('ceshi.')

 

转载于:https://www.cnblogs.com/alplf123/p/10303667.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值