【发布时间】:2017-08-26 12:16:39
【问题描述】:
我已经编写了这段代码来从 xml 文档中获取命名空间。 我正在尝试处理异常,并将完整的跟踪写入日志。但是跟踪没有在日志中写入自定义消息(尽管我可以在屏幕上看到它)。
我相信,我在 Logger 处理程序配置中缺少一些东西。我们需要处理任何特定的配置吗?以下是我到目前为止的记录器配置。
任何帮助将不胜感激。!
logger = logging.getLogger(__name__)
hdlr = logging.FileHandler(r'C:\link.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
def get_ns(xmlroot):
"""Retrieve XML Document Namespace """
try:
logger.info("Trying to get XML namespace detail")
nsmap = xmlroot.nsmap.copy()
logger.info("Creating XML Namespace Object, {0}".format(nsmap))
nsmap['xmlns'] = nsmap.pop(None)
except (KeyError, SystemExit):
logging.exception("XML files does not contain namespace, Halting Program! ")
sys.exit()
else:
for ns in nsmap.values():
logger.info("Retrieved XML Namespace {0}".format(ns))
return ns
屏幕输出:
ERROR:root:XML files does not contain namespace, Halting Program!
Traceback (most recent call last):
File "C:\link.log", line 28, in get_ns
nsmap['xmlns'] = nsmap.pop(None)
KeyError: None
【问题讨论】:
-
可以编辑您的问题以包含您在屏幕上看到的回溯吗?
-
@Odysseas:我用屏幕输出更新了问题。
标签: python python-2.7 exception logging exception-handling