私は他のアプリケーションログから特定のフォーマット要件にカスタムログを分離するために、Google App Engineの上の柔軟な(VM)環境で次のコードを使用しました:生カスタムログ
import logging as std_logging
std_logging.basicConfig()
custom_formatter = std_logging.Formatter('%(created)f\t%(message)s')
custom_handler = std_logging.FileHandler('/var/log/app_engine/custom_logs/custom.log')
custom_handler.setFormatter(custom_formatter)
custom_logging = std_logging.getLogger('custom')
custom_logging.addHandler(custom_handler)
通常のPython環境では、これらは指定された形式のプレーンテキスト行としてログファイルに書き込まれます。
しかし、App Engineから生成されたログをCloud Storageにダンプした後、App Engineが各ログを他の情報でラップしていることに気付きました。
など。
{
"insertId":"vsdacv1235jj1",
"log":"appengine.googleapis.com/custom.var.log.app_engine.app.custom_logs.custom.log",
"metadata":{
"labels":{
"appengine.googleapis.com/module_id":"default",
"appengine.googleapis.com/version_id":"1",
"compute.googleapis.com/resource_id":"1234256789901203",
"compute.googleapis.com/resource_name":"bbq23asd123",
"compute.googleapis.com/resource_type":"instance"
},
"projectId":"my-project",
"serviceName":"appengine.googleapis.com",
"timestamp":"2016-06-24T20:16:15Z",
"zone":"us-central1-f"
},
"textPayload":"1466799374933\tthis is my custom message"
}
textPayload
フィールドの値は、私が生成される実際のログです(わかりやすくするためにフォーマットされた)が、App Engineので包まれています。
この現象を防ぐ方法はありますか?ログを正しくフォーマットするためにこれらのログを再処理することは望ましくありません。