このページでは、App Engine アプリで使用可能なログと、ログエントリを作成、表示する方法について説明します。
App Engine では次の 2 種類のログを収集します。
リクエストログ: アプリに送信されるリクエストのログ。App Engine ではリクエストログに自動的にエントリが作成されます。
アプリログ: このページで説明されているように、サポートされているフレームワークまたはファイルに書き込むログエントリ。
App Engine はこれらのログを Cloud Logging エージェントに自動的に送信します。ログは、ログビューア、コマンドライン、またはプログラムで表示できます。
アプリログの書き込み
オプション: 構造化ログを stdout
と stderr
に書き込む
データの精度が重要でない場合は、stdout
と stderr
に単純なテキスト文字列を送信できます。文字列は、ログ エクスプローラ、コマンドライン、Cloud Logging API にメッセージとして表示され、メッセージを発行した App Engine のサービスとバージョンに関連付けられます。
ログ エクスプローラでこれらの文字列を重要度でフィルタするには、構造化データとしてフォーマットする必要があります。詳細については、構造化ロギングをご覧ください。
アプリログのエントリをリクエストログに関連付ける場合は、構造化アプリログのエントリにリクエストのトレース ID を含める必要があります。トレース ID は X-Cloud-Trace-Context
リクエスト ヘッダーから抽出できます。構造化ログエントリで、ID を logging.googleapis.com/trace
という名前のフィールドに書き込みます。X-Cloud-Trace-Context
ヘッダーの詳細については、リクエストを強制的にトレースするをご覧ください。
Cloud Run のドキュメントで、トレース ID を使用した構造化ログエントリの書き込みの例をご覧ください。App Engine アプリでも同じ手法を使用できます。
ログの表示
ログ エクスプローラを使用して、アプリケーション ログとリクエストログを表示できます。
Google Cloud コンソールのログ エクスプローラに移動します。
ページの上部にある既存の Google Cloud プロジェクトを選択します。
プルダウン メニューからリソースタイプとして [GAE アプリケーション] を選択します。
リクエストログのエントリに関連付けるアプリログのエントリを確認するには:
フィルタ メニューから
httpRequest.requestUrl
ログを選択します。リクエストログのエントリを開きます。対象のリクエストに関連付けられたアプリログがリクエストログのエントリの下にネストされて表示されます。
単純なテキスト エントリを標準出力に送信する場合は、ログビューアを使用して重要度でアプリエントリをフィルタリングすることはできません。また、特定のリクエストに対応するアプリログを表示することもできません。ログ エクスプローラでは、テキストやタイムスタンプなど、他のタイプのフィルタを使用することもできます。
ログ エクスプローラでは、App Engine サービスとバージョン、その他の条件でフィルタリングできます。ログで特定のエントリを検索することもできます。詳細については、ログ エクスプローラの使用をご覧ください。
コマンドラインを使用してログを表示する
App Engine のログをコマンドラインから表示するには、次のコマンドを使用します。
gcloud app logs tail
詳細については、gcloud app logs tail をご覧ください。
プログラムでログを読み取る
プログラムでログを読み取るには、次のいずれかの方法を使用します。
- Pub/Sub へのログシンクと、Pub/Sub から pull するスクリプトを使用する。
- 使用しているプログラミング言語のクライアント ライブラリから Cloud Logging API を呼び出す。
- Logging API REST エンドポイントを直接呼び出す。
料金、割り当て、ログの保持ポリシー
リクエストログとアプリログの両方に適用される料金については、Cloud Logging の料金をご覧ください。
ログの保持ポリシーとログエントリの最大サイズについては、割り当てと上限をご覧ください。ログを長期間保存する場合は、Cloud Storage にログをエクスポートできます。ログをさらに処理するために、BigQuery や Pub/Sub へエクスポートすることもできます。
ログリソース使用状況の管理
アプリのコードからログエントリの書き込み量を調整することで、アプリログからロギング アクティビティの量を制御できます。リクエストログは自動的に作成されるため、アプリに関連付けられたリクエスト ログエントリの数を管理するには、Cloud Logging のログ除外機能を使用します。
既知の問題
アプリログのエントリが、リクエストログに関連付けられない場合がある。これは、アプリがリクエストを初めて受信した場合および、App Engine がアプリログにステータス メッセージを書き込む場合に発生します。詳細については、https://issuetracker.google.com/issues/138365527 をご覧ください。