为方便追查问题,Python SDK提供了日志记录功能,该功能默认处于关闭状态。
说明 开启Python SDK日志记录功能需要Python SDK 2.6.x以上版本。
Python SDK日志记录功能可以收集定位各类OSS操作的日志信息,并以日志文件的形式存储在本地。
- 日志格式:
<time><name><level><threadId><message>
- 日志级别:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
说明 指定日志级别后,本地日志文件只会记录指定级别及高于指定级别的信息。例如指定日志级别为INFO,则日志文件会记录CRITICAL、ERROR、WARNING及INFO级别的相关日志信息。
开启Python SDK日志记录功能
以下代码用于开启Python SDK日志记录功能。
# -*- coding: utf-8 -*- import os import logging import oss2 from itertools import islice # 下载日志信息到本地日志文件,并保存到指定的本地路径中。 # 如果未指定本地路径只填写了本地日志文件名称(例如examplelogfile.log),则下载后的文件默认保存到示例程序所属项目对应本地路径中。 log_file_path = "D:\\localpath\\examplelogfile.log" # 开启日志。 oss2.set_file_logger(log_file_path, 'oss2', logging.INFO) # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret') # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。 # 填写Bucket名称,例如examplebucket。 bucket = oss2.Bucket(auth, 'yourEndpoint', 'examplebucket') # 遍历文件目录。 for b in islice(oss2.ObjectIterator(bucket), 10): print(b.key) # 获取文件元信息。 # 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。 object_meta = bucket.get_object_meta('exampledir/exampleobject.txt')
相应的日志信息如下:
说明 如果需要更详细的日志信息,您可以将日志级别修改为DEBUG。
2018-11-20 16:37:46,437 oss2.api [INFO] 26716 : Exception: { 'status': 404, 'x-oss-request-id': '5BF3C7DA236B3A201CE64679', 'details': { 'HostId': 'examplebucket.oss-cn-shenzhen.aliyuncs.com', 'Message': 'The specified key does not exist.', 'Code': 'NoSuchKey', 'RequestId': '5BF3C7DA236B3A201CE64679', 'Key': 'exampledir/exampleobject.txt' } }
根据以上日志信息可知初始化一个Bucket会遍历其中所有的Object,当请求的Object不存在时会发生错误,错误信息为NoSuchKey
。