Python 打开要记录的xml文件错误

Python 打开要记录的xml文件错误,python,logging,exception-handling,Python,Logging,Exception Handling,当我在命令行中运行python脚本时,在尝试检索xml文件时会得到一个错误输出。我想将此错误消息写入日志文件 import logging logger = logging.getLogger('fileChecker') hdlr = logging.FileHandler('./fileChecker.log') formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') hdlr.setFormatter(f

当我在命令行中运行python脚本时,在尝试检索xml文件时会得到一个错误输出。我想将此错误消息写入日志文件

import logging
logger = logging.getLogger('fileChecker')
hdlr = logging.FileHandler('./fileChecker.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.WARNING)

try:
    fileXML = mylibrary.getXML(enf, name)
    logger.info('got xml file ok')
except TypeError:
    errorCount += 1
    logger.error('we have a problem')
mylibrary.getXML()在这里抛出了一个错误,我可以在命令行输出中看到这个错误。
如何将其写入日志文件?

您可以捕获引发的异常对象:

try:
    fileXML = myLibrary.getXML(enf, name)
    logger.info('got xml file ok')
except TypeError, e:
    errorCount += 1
    logger.error('We have a problem: ' + str(e))

请注意,如果您使用的是Python
日志记录
模块,那么还有一种方法。

谢谢,但是如果我这样做,我只会得到NoneTYpe expetion。表示对象不可订阅。我想记录myLibrary.getXML(enf,name)输出到终端的错误消息。您必须提供更多信息,例如您想要实现的实际输出。例如,根据我试图检索的xml文件,我可能会收到类似“权限被拒绝”的消息,至少在命令行中我是这样做的。另一个错误是文件不存在。当我写日志时,我希望有更多的信息,而不仅仅是“非类型”。权限被拒绝是好的。但我如何让它将其写入日志而不是命令行?我猜命令行消息是由getXML()输出的,上面的代码就是捕捉类型为
TypeError
的异常。如果要捕获其他异常,必须适当地更新
except
子句。看见如果需要,可以使用打印堆栈跟踪。