Bob*_*Bob 3 python logging nonetype
在这样使用python登录时
import logging
logging.basicConfig(level=logging.INFO)
logger = None
if <some condition>:
logger = logging.getLogger(__name__)
... some code ...
logger.debug('message')
Run Code Online (Sandbox Code Playgroud)
logger.debug如果没有if声明就不存在,是否可以避免调用?
您可以构造一个包装器对象并在任何地方使用它:
class LoggerWrapper(object):
def __init__(self, logger):
self.logger = logger
def debug(self, *args, **kwargs):
if self.logger is None:
return
self.logger.debug(*args, **kwargs)
my_wrapper = LoggerWrapper(logger)
my_wrapper.debug('message')
Run Code Online (Sandbox Code Playgroud)
话虽这么说,这不是Python的日志模块特有的.在调用方法()之前var,还None需要检查任何变量var.method().
始终定义记录器并简单地通过日志记录配置/设置禁用日志记录可能更容易.这样可以保持代码清洁,所有记录器调用都会成功,但如果禁用该特定记录器,输出将无法进行.
最后,您可以选择确实使用if语句,因为它本身并不是更多的代码:
if logger:
logger.debug('message')
Run Code Online (Sandbox Code Playgroud)
这不是你如何使用日志记录:它完全忽略了这一点.关键是始终只是记录,然后(在应用程序级别)适当地配置处理程序,以便它们记录调试级别.您的应用级配置甚至可以为每个模块中的记录器设置处理程序.有关详细信息,请参阅Python日志记录文档.
| 归档时间: |
|
| 查看次数: |
3505 次 |
| 最近记录: |