aliyun / aliyun-oss-python-sdk

Aliyun OSS SDK for Python
MIT License
936 stars 363 forks source link

关于判断oss文件是否存在的日志问题 #166

Open NullYing opened 5 years ago

NullYing commented 5 years ago

目前遇到了需要大量用object_exists来判断文件存不存在, sdk会在遇到不存在的时候会打出error日志, 但是对于这个函数来说,不存在文件应该也是正常情况, 错误日志输出不太合理

错误日志如下:

Exception: {'status': 404, 'x-oss-request-id': 'xx', 'details': {'Code': 'NoSuchKey', 'Message': 'The specified key does not exist.', 'RequestId': 'xx', 'HostId': 'xxxxx', 'Key': 'xxxxx'}}

看了一下代码, 抛出错误是封装在_do_url函数...全局拦截了

coderall commented 5 years ago

反馈已收到,我们评估下

pessimo commented 5 years ago

我这边遇到的情况是使用get_object直接获取文件,如果报错NoSuchKey则进行后续处理。同样也会出现大量的error日志

coderall commented 5 years ago

@NullYing @pessimo 这种情况,可以手动设置日志级别来忽略SDK日志,在外部根据业务需要再打业务日志

hangzws commented 5 years ago

反馈已经收到,我们会在下一个版本优化这个问题。

PegasusWang commented 5 years ago

同样遇到类似问题,目前业务使用sentry记录 error 异常,被 oss 404 异常给刷屏了,没有办法聚合异常。 目前 oss2.api 代码使用
logger.error("Exception: {0}".format(e))

记录日志,导致 sentry 无法聚合类似异常,每一条都会记录一条。建议使用下边形式

logger.error("Exception: %s", str(e))

python官方文档也是使用参数的形式:

logger.error("Houston, we have a %s", "major problem", exc_info=1)

这种形式方便聚合异常。或者在判断是否存在文件的时候不应该打出来异常日志。 这样先判断文件是否存在,再去调用其他接口也不会打出来异常日志了。