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

如何使用python日志框架在警告级别或信息级别使用回溯记录异常?,python,exception,logging,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) 我不希望它处于错误级别,因为在我的特殊情况下,它不是

使用类似这样的方法:

try:
   # Something...
except Exception as excep:
   logger = logging.getLogger("component")
   logger.warning("something raised an exception: " + excep)
   logger.info("something raised an exception: " + excep)
我不希望它处于错误级别,因为在我的特殊情况下,它不是错误。

来自:

检查
kwargs
中的三个关键字参数:
exc\u info
stack\u info
extra

如果
exc_info
的计算结果不为false,则会将异常信息添加到日志消息中。如果提供了异常元组(以返回的格式)或异常实例,则使用它;否则,调用以获取异常信息

我们也要这样做:

logger.warning("something raised an exception:", exc_info=True)
下面是一个有效的方法(Python2.6.5)

您可以尝试以下方法:

from logging import getLogger

logger = getLogger('warning')

try:
    # Somethings that is wrong.

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

IIRC,这些不会做同样的事情。第一种方式记录堆栈跟踪,第二种方式记录发生的异常的异常类的名称。“这很不一样。@BrianPeterson该命令的目的是打印
exp
。上述两种方法都实现了这一点。我现在已经测试过了。请注意,文档中没有明确提到这一点以获取信息、警告、错误等。它们只是说“参数被解释为用于debug()”——这就是为什么如果以后需要返回到这里,您应该在这里查找上述行为描述的原因。
from logging import getLogger

logger = getLogger('warning')

try:
    # Somethings that is wrong.

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