Python http错误日志记录

2024-04-25 12:47:16 发布

您现在位置:Python中文网/ 问答频道 /正文

下一个问题

我确实有一个python脚本在工作和处理HTTP请求。 有时我会遇到一些错误,比如http400。现在我想记录这些并中断脚本停止工作。在

 import logging

 date = .strftime().....

 try: 
        script X
 except:
        error = urllib2.HTTPError
        errorcode = error.code
        file = open ("error.txt",'r+')
        file.write("Error Code: %s, date \n", errorcode)
        file.close()
        pass

对吗?或者我做错什么了。我应该对HTTP错误使用If吗?在

这是否会阻止脚本在获取错误->通过时停止

谢谢你!在


Tags: import脚本httpdatelogging错误记录script
3条回答

使用pythonrequests库:::

try:
    res = requests.post(url, data, headers=headers, auth=auth)
    if res.status_code == 200 or res.status_code == 201:
        return 'SUCCESS', res.content
    else:
        return 'FAIL', res.status_code
except Exception as e:
    print "Http request failed... %s" % traceback.format_exc()

你的台词是:

error = urllib2.HTTPError

在这种情况下没有意义。它的意思是errorurllib2.HTTPError类。该类用于引发异常,您对捕捉异常感兴趣。在

通常我们会写:

^{pr2}$

这表示您正在处理的异常的类型urllib2.HTTPError,这就是error将是什么类型,或者是从urllib2.HTTPError继承的任何类对象。在

这也意味着你不会处理任何其他类型的异常。这是件好事。只处理你能处理的事情,让其他事情从你身边飞过。在

此时,except语句捕获所有可能的异常类型。你还丢弃了信息,所以你不知道什么是例外。在

写入文件时,请使用with。这可以确保文件在写入时发生异常时被正确关闭。不要使用file作为变量名。您需要使用%插入字符串格式:

    with open ("error.txt",'r+') as log:
        log.write("Error Code: %s, date \n" % errorcode)

好的,代码复查完毕。在

构建代码的更好方法是使用错误日志(Python中内置的一个特性):

import logging

logger = logging.getLogger('__name__')

fh = logging.FileHandler('errors.log')
logger.addHandler(fh)

try:
   # something
except urllib2.HttpError, e:
   logger.error(e)

相关问题 更多 >

    热门问题