zoukankan      html  css  js  c++  java
  • python 通过装饰器实现类的日志记载

    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.')
  • 相关阅读:
    python数字
    python字符串方法
    python操作符与流程控制
    网络基础和python(二)
    网络基础和python
    Ubuntu源更新
    make和makefile介绍
    JavaScript
    redis mac安装配置
    网络编程之socket(TCP,UDP)
  • 原文地址:https://www.cnblogs.com/alplf123/p/10303667.html
Copyright © 2011-2022 走看看