トラブルシューティングを容易にするために、OSS SDK for Pythonにはログ記録機能があります。 デフォルトでは、ログ記録は無効になっています。
ログ記録は、Python V2.6.X以降のOSS SDKで提供されます。
背景情報
OSS SDK for Pythonが提供するログ記録機能を使用して、OSSでの操作のログを収集できます。 ログ情報は、コンピューターに保存されているログファイルに記録されます。
ログ形式:
<time><name><level><threadId><message>
降順のログレベル: CRITICAL、ERROR、WARNING、INFO、DEBUG、およびNOTSET
説明ログレベルを指定すると、ローカルログファイルには、指定したレベル以上のログのみが記録されます。 たとえば、ログレベルをINFOに設定した場合、ログファイルには、レベルがCRITICAL、ERROR、WARNING、およびINFOのログが記録されます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
ログ記録の有効化
次のサンプルコードは、ログ記録を有効にする方法の例を示しています。
# -*-コーディング: utf-8 -*-
osのインポート
インポートロギング
oss2のインポート
itertools import isliceから
oss2.credentialsから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.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトとディレクトリを横断します。
isliceのbの場合 (oss2.ObjectIterator(bucket) 、10):
プリント (b. キー)
# オブジェクトのメタデータを照会します。
# オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 バケット名をフルパスに含めないでください。
object_meta = bucket.get_object_meta('exampledir/exampleobject.txt ')
ログの例:
より詳細な情報を提供するログを取得するには、ログレベルをDEBUGに変更します。
2018-11-20 16:37:46、437 oss2.api [情報] 26716: 例外: {
'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
エラーが発生します。