目前我的大部分代码都设计为在 python 2.76 上运行。因此,我编写的库使用以下代码,以便我的库的任何使用者都可以拥有来自该库的调试日志记录:
所以在每个库文件中我都有这个:
log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())
这样,如果使用我的库的客户端脚本实例化记录器对象,该库也将具有日志输出。
然而,我现在需要调整这个库,以便它在 python 2.6 上运行,并且它抱怨这段代码:
Traceback (most recent call last):
File "./LCMTool.py", line 36, in <module>
from lcm_zfssa import *
File "/devel/v2/lcm_zfssa.py", line 20, in <module>
log.addHandler(logging.NullHandler())
AttributeError: 'module' object has no attribute 'NullHandler'
有没有办法调整它,以便它可以与 python 2.6 一起使用?
感谢您的帮助。
根据您的问题的分布情况,解决方案来自Python指南(最终从请求来源)可能会起作用:尝试导入 NullHandler 并在except ImportError
子句,像这样定义类:
# Set default logging handler to avoid "No handler found" warnings.
import logging
try: # Python 2.7+
from logging import NullHandler
except ImportError:
class NullHandler(logging.Handler):
def emit(self, record):
pass
logging.getLogger(__name__).addHandler(NullHandler())
但如果使用日志命名空间,您将需要插入该类:
# in the except clause, after the class def:
logging.NullHandler = NullHandler
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)