在Django中,我到处都有记录器,目前有硬编码的名称。
对于模块级日志记录(即,在视图函数的模块中),我有这样做的冲动。
log = logging.getLogger(__name__)
对于类级别的日志记录(例如,在类__init__
方法中),我有这样做的冲动。
self.log = logging.getLogger("%s.%s" % (
self.__module__, self.__class__.__name__))
在处理几十个getLogger("hard.coded.name")
问题之前,我正在寻找第二种意见。
这会起作用吗?还有人用同样缺乏想象力的方式命名他们的伐木工吗?
此外,我是否应该分解并为这个日志定义编写一个类装饰器?
3条答案
按热度按时间5hcedyr01#
我通常不使用或不需要类级别的日志记录器,但我最多在几个类中保留我的模块。
在模块的顶部和后续:
这就避免了到处都需要
self.log
,这往往会从把它放在每个类的Angular 来困扰我,并使我的5个字符接近79个字符行。你总是可以使用一个伪类装饰器:
6kkfgxo02#
对于类级别的日志记录,作为伪类装饰器的替代方案,您可以使用元类在类创建时为您创建日志记录器……
vbopmzt13#
这看起来是可行的,只是
self
没有__module__
属性;它的类会。类级别的日志记录器调用应该如下所示: