相关疑难解决方法(0)

Python使用常见的记录器类mixin和类继承进行日志记录

我想创建一个Python日志记录类,它可以作为记录配置的常用方法继承,但是从父级单独控制基类的日志记录级别.这类似于如何在多个模块中使用python日志记录.Vinay Sajip使用LogMixin 的答案非常接近.以下是我稍加修改的版本.

我的大多数类都继承了较小的类.例如:

filename:LogMixin.py

import logging, logging.config
import yaml
class LogMixin(object):
    __loggerConfigured = False
    @property
    def logger(self):
        if not self.__loggerConfigured:
            with open('log_config.yaml', 'rt') as f:
                config = yaml.load(f.read())
                logging.config.dictConfig(config)
            self.__loggerConfigured = True
        name = '.'.join([self.__class__.__name__])
        return logging.getLogger(name)
Run Code Online (Sandbox Code Playgroud)

文件名:Base.py

from LogMixin import LogMixin
class Base(LogMixin):
    def __init__(self):
        self.logger.debug("Debug Base")
    def run_base(self):
        self.logger.debug("Debug Running Base")
        self.logger.info("Info Running Base")
if __name__ == '__main__':
    my_base = Base()
    my_base.run_base()         
Run Code Online (Sandbox Code Playgroud)

filename:Parent.py

from Base import Base
class Parent(Base):
    def __init__(self):
        self.logger.debug("Debug Parent") …
Run Code Online (Sandbox Code Playgroud)

python inheritance logging

8
推荐指数
1
解决办法
3489
查看次数

标签 统计

inheritance ×1

logging ×1

python ×1