如何使用python日志框架使用回溯在警告或信息级别记录异常?

时间:2008-10-10 17:02:08

标签: python exception logging

使用类似的东西:

try:
   # Something...
except Exception as excep:
   logger = logging.getLogger("component")
   logger.warning("something raised an exception: " + excep)
   logger.info("something raised an exception: " + excep)

我宁愿没有错误级别的原因,在我的特殊情况下,这不是错误。

7 个答案:

答案 0 :(得分:64)

来自logging documentation

  

kwargs中有三个被检查的关键字参数:exc_infostack_infoextra

     

如果exc_info未评估为false,则会导致将异常信息添加到日志消息中。如果提供了异常元组(以sys.exc_info()返回的格式)或异常实例,则使用它;否则,调用sys.exc_info()来获取异常信息。

所以:

logger.warning("something raised an exception:", exc_info=True)

答案 1 :(得分:4)

这是一个有效的(python 2.6.5)。

logger.critical("caught exception, traceback =", exc_info=True)

答案 2 :(得分:2)

你可以试试这个:

from logging import getLogger

logger = getLogger('warn')

try:
    # Somethings that is wrong.

except Exception as exp:
    logger.warn("something raised an exception: " , exc_info=True)
    logger.warn("something raised an exception: {}".format(exp))  # another way

答案 3 :(得分:-1)

在某些情况下,您可能希望使用warnings库。您可以对警告的显示方式进行非常精细的控制。

答案 4 :(得分:-1)

我能够使用以下代码片段在异常块中显示日志消息:

# basicConfig have to be the first statement
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("componet")
try:
    raise BaseException
except BaseException:
    logger.warning("something raised an exception: ",exc_info=True)
    logger.info("something raised an exception: " ,exc_info=True)

答案 5 :(得分:-2)

尝试使用Logger.exception

  

Logger.exception()创建一个日志   消息类似于Logger.error()。该   区别在于Logger.exception()   转储堆栈跟踪。   仅从a调用此方法   异常处理程序。

答案 6 :(得分:-5)

使用Logger.exception()

try:
   #Something...
except BaseException, excep:
   logger = logging.getLogger("component")
   logger.exception("something raised an exception")