wim*_*wim 4 python logging exception python-2.7
logger.exception
提及的文件:
只应从异常处理程序调用此方法.
因此用法应如下所示:
try:
errorerrorerror
except NameError as e:
logger.exception('debug message %s', e)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试以"错误"方式进行时,行为似乎是一样的:
try:
errorerrorerror
except NameError as e:
pass
logger.exception('debug message %s', e)
Run Code Online (Sandbox Code Playgroud)
在文档中提到这个警告的原因是什么?难道竟真的,我们只能用它在拦网除外,对于一些微妙的原因,这里没有明显的?
该方法旨在用于异常处理程序.因此,文档告诉你,通过使用单词should,not must.
在标准文本中,应该而且必须严格定义; 一个意味着我们建议你这样做,如果你这样做会好得多,另一个意味着如果你不这样做,这是一个彻头彻尾的错误.有关IETF任务组的措辞,请参阅RFC 2119.
所有logging.exception()
操作都是exc_info
在调用之前设置关键字参数logging.error()
.exc_info
然后,该论证将被充实,以包括最近处理的异常,取自sys.exc_info()
.然后由格式化程序包含异常消息(通过该Formatter.format_exception()
方法)来格式化异常.
因为sys.exc_info()
无论是在作品except
套件和出,两种变型的工作.从代码文档的角度来看,如果在except
处理程序中使用它会更清楚.
您不需要包含错误消息,因为您的日志格式化程序应该已经为您执行此操作:
logger.exception('debug message 2') # exception should be included automatically
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令将异常显式附加到任何日志消息:
logger.error('debug message 2', exc_info=sys.exc_info())
Run Code Online (Sandbox Code Playgroud)
或具有异常类型,异常值和回溯的任何其他3元组值.或者,设置exc_info=1
为让记录器从sys.exc_info()
自身检索信息.
请参阅以下文档Logger.debug()
:
exc_info,如果它不计算为false,则会将异常信息添加到日志消息中.如果提供了异常元组(以返回的格式
sys.exc_info()
),则使用它; 否则,sys.exc_info()
调用以获取异常信息.
归档时间: |
|
查看次数: |
1531 次 |
最近记录: |