我想在函数中实现一个可选的记录器.就像是:
def foo(arg1, arg2, arg3, logger=None):
logger = logger or (lambda *x: None)
...
self.logger.debug("The connection is lost.")
Run Code Online (Sandbox Code Playgroud)
我想在记录器存在的情况下进行日志记录.否则,记录器的调试将不起作用.
基本上,实现它的简单方法是将每个调试语句嵌套在一个if logger块中,但是当有许多调试语句时它似乎很乱.
小智 9
自Python 2.7以来NullHandler,logging模块中包含无操作:
import logging
logging.getLogger('foo').addHandler(logging.NullHandler())
Run Code Online (Sandbox Code Playgroud)
请参阅有关为库配置日志记录的文档.
几个选项:
创建一个虚拟记录器(我最喜欢的):
logger = logger or logging.getLogger('dummy') # without configuring dummy before.
Run Code Online (Sandbox Code Playgroud)
使用一个级别null效果创建一个虚拟对象:
class DummyObject(object):
def __getattr__(self, name):
return lambda *x: None
logger = logger or DummyObject()
Run Code Online (Sandbox Code Playgroud)
将每个调试语句嵌套在块中:
if logger:
logger.debug("abc")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3241 次 |
| 最近记录: |