gpt4 book ai didi

python - python 中的条件日志记录

转载 作者:行者123 更新时间:2023-12-03 00:55:46 27 4
gpt4 key购买 nike

我想在模块中包含日志记录,但我不希望模块创建新的日志对象/文件,我希望它使用调用者日志对象,无论是什么,但前提是它们传递一个。我知道我可以将所有日志调用放在 try block 中,但这很尴尬。我最终想出的方法似乎可行,但看起来很笨拙,我确信有更好的方法来做到这一点。

class MyClass(object):
def __init__(self, arg1, arg2, log=None):
if log == None:
class log(object):
def error(self, msg): pass
def warning(self, msg): pass
def info(self, msg): pass
def debug(self, msg): pass
self.log = log()
else:
self.log = log
self.log.debug('Starting')

做这样的事情有什么更好的方法吗?

谢谢!

最佳答案

大多数记录器使用工厂模式来让一些集中资源管理哪些类(如果有)获取实际记录的记录器(而不是调用虚拟函数)。这意味着有一个集中的 API、集中的控制,并且不需要逐类定义记录器。

将传递的参数视为从一件事到另一件事的信号通常是一个好主意,“您需要使用此对象来完成您的工作。”除非 MyClass 是一个记录器,否则将其作为参数传递并没有真正意义——它不需要记录器来完成其工作,如果需要记录器,那就是糟糕的设计。

关于python - python 中的条件日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083249/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com