【问题标题】:Python logger handler config for exception logging用于异常记录的 Python 记录器处理程序配置
【发布时间】: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


【解决方案1】:

改变

logging.exception("XML files does not contain namespace, Halting Program! ")

logger.exception("XML files does not contain namespace, Halting Program! ")

因为您已配置为写入文件C:\link.loglogger

使用logging.exception 使用“root logger”,默认输出到控制台。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2015-04-02
    • 2020-10-01
    相关资源
    最近更新 更多