在 Django 中,我到处都有记录器,目前具有硬编码名称。
对于模块级日志记录(即在视图函数的模块中),我有这样做的冲动。
log = logging.getLogger(__name__)
对于类级别的日志记录(即在类中__init__
方法)我有这样做的冲动。
self.log = logging.getLogger("%s.%s" % (
self.__module__, self.__class__.__name__))
在解决几十个出现的问题之前,我正在寻求第二意见getLogger("hard.coded.name")
.
这行得通吗?还有其他人用同样缺乏想象力的方式命名他们的记录器吗?
此外,我应该分解并为这个日志定义编写一个类装饰器吗?
我通常不使用或不需要类级记录器,但我最多将模块保留在几个类中。一个简单的:
import logging
LOG = logging.getLogger(__name__)
在模块的顶部及后续部分:
LOG.info('Spam and eggs are tasty!')
从文件中的任何位置通常可以让我到达我想去的地方。这避免了需要self.log
到处都是,这往往让我从将其放入每个班级的角度来看感到困扰,并使我的 5 个字符更接近 79 个适合的字符行。
您始终可以使用伪类装饰器:
>>> import logging
>>> class Foo(object):
... def __init__(self):
... self.log.info('Meh')
...
>>> def logged_class(cls):
... cls.log = logging.getLogger('{0}.{1}'.format(__name__, cls.__name__))
...
>>> logged_class(Foo)
>>> logging.basicConfig(level=logging.DEBUG)
>>> f = Foo()
INFO:__main__.Foo:Meh
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)