【发布时间】:2018-10-03 11:53:20
【问题描述】:
我有三个 Python 模块:一个包含一个(抽象)父类,两个包含实现这个父类的类。父类有一些具体的和一些抽象的方法,看起来像这样:
moduleA:
from abc import ABC, abstractmethod
import logging
class Parent(ABC):
def __init__(self):
logger.info("Hello world from base class!")
def concreteMethod(self, something):
return something
@abstractmethod
def additionalMethod(self, something):
"""it needs to be implemented"""
moduleB:
import logging
from moduleA import Parent
logger = logging.getLogger("b_logger")
fh = logging.FileHandler('b_logger.log')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
class ChildB(Parent):
def __init__(self):
super().__init__()
def additionalMethod(self):
logger.info("Hello world from B")
moduleC:
import logging
from moduleA import Parent
logger = logging.getLogger("c_logger")
fh = logging.FileHandler('c_logger.log')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
class ChildC(Parent):
def __init__(self):
super().__init__()
def additionalMethod(self):
logger.info("Hello world from C")
现在如果我决定跑步:
from moduleB import ChildB
from moduleC import ChildC
B = ChildB()
B.additionalMethod()
C = ChildC()
C.additionalMethod()
我想要两个日志文件,每个文件都有一行来自父类,一个来自子类。
我的问题是,如何配置父类记录器以登录到子类的日志文件(不是自己的)?
【问题讨论】:
-
这不是一个真正的 ABC 问题;在这里使用抽象基类无关紧要。
标签: python python-3.x oop logging python-3.6