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 レベルのログが記録されます。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
Python SDK のログ記録の有効化
次のコードは、Python ソフトウェア開発キット (SDK) のログ記録を有効にします。
# -*- coding: utf-8 -*-
import os
import logging
import oss2
from itertools import islice
from oss2.credentials import EnvironmentVariableCredentialsProvider
# ログ情報をローカルログファイルにダウンロードし、指定されたローカルパスに保存します。
# 完全なパスを指定せず、examplelogfile.log のようなファイル名のみを指定した場合、ログファイルはデフォルトでプロジェクトのルートフォルダーに保存されます。
log_file_path = "D:\\localpath\\examplelogfile.log"
# ログ記録を有効にします。
oss2.set_file_logger(log_file_path, 'oss2', logging.INFO)
# 環境変数からアクセス認証情報を取得します。このコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンに対応するエンドポイントを設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン (cn-hangzhou など) を指定します。注意:このパラメーターは V4 署名に必須です。
region = "cn-hangzhou"
# examplebucket を実際のバケット名に置き換えます。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# ファイルディレクトリを走査します。
for b in islice(oss2.ObjectIterator(bucket), 10):
print(b.key)
# ファイルメタデータを取得します。
# オブジェクトの完全なパス (例: exampledir/exampleobject.txt) を指定します。完全なパスにバケット名を含めることはできません。
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'
}
}ログは、リクエストされたオブジェクトが存在しないために NoSuchKey エラーが発生したことを示しています。