OSS Python SDKには、問題を簡単にトラックするためのログ機能があります。 この機能は既定では無効になっています。

ログ機能を使用すると、OSS 操作に関するログ情報を見つけ出して収集し、その情報をログファイルとしてローカルディスクに保存することができます。

ログ機能は OSS Python SDK 2.6.x 以降でのみ利用可能です。

ログファイルの形式は次のとおりです。

<time><name><level><threadId><message> 
ログレベルは、次の重要度順に並べられます。CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
ログレベルを指定した後は、指定したレベル以上のレベルのログ情報だけが、ローカルのログファイルに記録されます。 たとえば、ログレベルを INFO に指定した場合、レベル CRITICAL、ERROR、WARNING、および INFO のログ情報がログファイルに記録されます。

Python SDK のログ機能の有効化

OSS Python SDK のログ機能を有効にするには、次のコードを実行します。

# -*- coding: utf-8 -*-

import os
import logging
import oss2
from itertools import islice

# Initialize information such as AccessKeyId, AccessKeySecret, and Endpoint. 
# Replace <AccessKeyId>, <AccessKeySecret>, <Bucket>, and <Endpoint> with actual values.
access_key_id = '<AccessKeyId>'
access_key_secret = '<AccessKeySecret>'
bucket_name = '<Bucket>'
endpoint = '<Endpoint>'

log_file_path = "log.log"
# Enable the logging function.
oss2.set_file_logger(log_file_path, 'oss2', logging.INFO)

# Create a bucket.
bucket = oss2. Bucket(oss2. Auth(access_key_id, access_key_secret), endpoint, bucket_name)

# Traverse all objects in the bucket.
for b in islice(oss2. ObjectIterator(bucket), 10):
    print(b.key)
# Obtain the object meta.
object_meta = bucket.get_object_meta('object')

記録されるログ情報は以下のとおりです。

2018-11-20 16:37:46,325 oss2.api [INFO] 26716 : Init oss bucket, endpoint: oss-cn-shenzhen.aliyuncs.com, isCname: False, connect_timeout: None, app_name: , enabled_crc: True
2018-11-20 16:37:46,326 oss2.api [INFO] 26716 : Start to List objects, bucket: funrily-hello, prefix: , delimiter: , marker: , max-keys: 100
2018-11-20 16:37:46,430 oss2.api [INFO] 26716 : List objects done, req_id: 5BF3C7DA236B3A201CE645F7, status_code: 200
2018-11-20 16:37:46,430 oss2.api [INFO] 26716 : Start to get object metadata, bucket: bucket-hello, key: object
2018-11-20 16:37:46,437 oss2.api [ERROR] 26716 : Exception: {
    'status': 404, 
    'x-oss-request-id': '5BF3C7DA236B3A201CE64679', 
    'details': {
    	'HostId': 'bucket-hello.oss-cn-shenzhen.aliyuncs.com', 
        'Message': 'The specified key does not exist.', 
        'Code': 'NoSuchKey', 
        'RequestId': '5BF3C7DA236B3A201CE64679', 
        'Key': 'object'
    }
}

前述のログ情報によると、バケットが初期化される際、バケット内のすべてのオブジェクトはトラバースされています。 要求されたオブジェクトが存在しない場合は、NoSuchKey エラーが発生します。