用于异常记录的Python记录器处理程序配置

用于异常记录的Python记录器处理程序配置

问题描述:

我已经编写了这段代码以从xml文档获取名称空间。 我正在尝试处理异常,并将完整跟踪写入日志。然而跟踪没有被写入日志中的自定义消息(尽管我可以在屏幕上看到它)。用于异常记录的Python记录器处理程序配置

我相信,我在记录器处理程序配置中丢失了一些东西。有没有我们需要处理的具体配置?下面是我的记录器配置到目前为止。

任何帮助将不胜感激。

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 
+0

可以编辑您的问题以包含您在屏幕上看到的回溯? – Odysseas

+0

@Odysseas:我更新了屏幕输出的问题。 – tgcloud

变化

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

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

因为它是logger您已经配置写入文件C:\link.log。使用logging.exception使用“根记录器”,默认输出到控制台。

+0

这对我很有用。感谢您的澄清。 – tgcloud