Python,导致异常的日志行

问题描述:

我昨天在Python中编写了一个程序,它检查数百个URL的有效性(主要不是404),但是当我的程序运行到一个无效的URL时,它会抛出很多异常,然后崩溃。我正在使用urllib.urlopen来访问链接。无论如何,我的程序会忽略这些异常并继续运行,但会在导致问题的代码行处记录日志?Python,导致异常的日志行

+0

你看到了哪些例外?根据我的经验,当urlopen调用失败时,你会得到很长的堆栈跟踪,但是你只需要抓住最下面的一个。或者对于不同的URL有几个不同的例外情况?显示你得到的堆栈跟踪。 –

+0

另请参阅[这个问题](http://*.com/questions/7712651/python-how-to-avoid-code-duplication-in-exception-catching/7712707#7712707)。 –

您可以使用Logger.exception()方法。例如:

LOGGER = logging.getLogger("my_logger_name") 
for my_url in urls_to_test: 
    try: 
     #test your url 
    except Exception: # or BaseException if you really want to catch all python exceptions 
     LOGGER.exception("something weird happened") 

这将显示引发异常的url的回溯,并且仍然继续测试其他URL。

+0

我给你+1了,但如果你没有赤身裸体的''除外:''我会更快乐。即使'除了例外:'会有所改善,但更具体的更好。 – Duncan

+0

@Duncan:你说得对,我用这种方式编辑了我的答案 –

你应该看看logging模块,它可以做到这一点,并具有一些非常有用的功能。