Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jupyter Python中的异常捕获程序不工作(sys.excepthook)_Python_Logging_Error Handling_Exception Handling_Sys - Fatal编程技术网

Jupyter Python中的异常捕获程序不工作(sys.excepthook)

Jupyter Python中的异常捕获程序不工作(sys.excepthook),python,logging,error-handling,exception-handling,sys,Python,Logging,Error Handling,Exception Handling,Sys,我试图捕获所有异常,并使用以下代码将它们记录到日志文件中,但由于某些原因,它无法捕获它们。代码是: # Prepares logging import logging import time output_folder='whatever' # Logging to file: today=time.strftime("%Y%M%d %H:%M:%S") logging.basicConfig(filename=output_folder+'/logger '+today+'.log',leve

我试图捕获所有异常,并使用以下代码将它们记录到日志文件中,但由于某些原因,它无法捕获它们。代码是:

# Prepares logging
import logging
import time
output_folder='whatever'
# Logging to file:
today=time.strftime("%Y%M%d %H:%M:%S")
logging.basicConfig(filename=output_folder+'/logger '+today+'.log',level=logging.DEBUG,
                    format='%(asctime)s %(message)s', filemode='w')
logging.info('Program started.')

# Every time there is an error, catch it
import sys
#def error_catching(exctype, value, tb):
def log_uncaught_exceptions(ex_cls, ex, tb):
    print "Error found"
    logging.critical(''.join(traceback.format_tb(tb)))
    logging.critical('{0}: {1}'.format(ex_cls, ex))

sys.excepthook = log_uncaught_exceptions
然后我生成一个错误,例如,通过调用一个不存在的变量('m'),我得到了错误,但日志文件中没有记录任何内容:

m #this should generate a NameError, which is the following

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-9-69b64623f86d> in <module>()
----> 1 m

NameError: name 'm' is not defined
m#这应该会生成一个NameError,如下所示
---------------------------------------------------------------------------
NameError回溯(最近一次呼叫上次)
在()
---->1米
NameError:未定义名称“m”
如前所述,日志文件不会捕获任何内容。我做错了什么

谢谢

免责声明:显然,公开悬赏的问题是无法解决的。因此,我的答案主要是基于

更改
sys.excepthook
在iPython上不起作用

解决方法是更新

您将在一些项目中找到关于它的附加解释和修复的实现,例如。

免责声明:显然,一个公开悬赏的问题是无法解决的。因此,我的答案主要是基于

更改
sys.excepthook
在iPython上不起作用

解决方法是更新


您将在一些项目中找到关于它的附加解释和修复的实现,例如。

我不确定iPython是否依赖于此钩子。我认为它自己有一个钩子。如果在接下来的24小时内没有提供任何答案,我会尝试写一个更好的答案。请参阅(可能是重复的问题…)Josay,谢谢您的评论。虽然标记为重复的答案有一些共同点,但该问题中选择的答案不是正确答案,可能是您的答案。我会试试你的方法,然后回来找你。我不确定iPython是否依赖这个钩子。我认为它自己有一个钩子。如果在接下来的24小时内没有提供任何答案,我会尝试写一个更好的答案。请参阅(可能是重复的问题…)Josay,谢谢您的评论。虽然标记为重复的答案有一些共同点,但该问题中选择的答案不是正确答案,可能是您的答案。我会试试你的方法,然后回来找你。这看起来很棒。谢谢@josay这看起来很棒。谢谢@Josay