在一个几乎没有非静态函数的类中,我通常会像这样记录日志:
class ClassA:
def __init__(self):
self._logger = logging.getLogger(self.__class__.__name__)
def do_something(self):
self._logger.info("Doing something")
def do_something_else(self):
self._logger.info("Doing something else.")
在一个有静态方法的类中我一直这样做:
class ClassB:
_logger = logging.getLogger("ClassB")
@staticmethod
def do_something():
ClassB._logger.info("Doing something")
@staticmethod
def do_something_else():
ClassB._logger.info("Doing something else")
你可以这样做,但它看起来很蹩脚:
class ClassB:
@staticmethod
def do_something():
logger = logging.getLogger("ClassB")
logger.info("Doing something")
@staticmethod
def do_something_else():
logger = logging.getLogger("ClassB")
logger.info("Doing something else")
是否有更好的模式从静态方法进行日志记录?
最佳答案
您可以将它们变成类方法。
class ClassB(object):
_logger = logging.getLogger("ClassB")
@classmethod
def do_something(cls):
cls._logger.info("Doing something")
但请注意,当您从 ClassB
派生并调用 do_something
时,它将获得不同的记录器,因为 cls
表示派生类而不是B 类
。
关于python - 从静态方法记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438767/