コンテンツにスキップ

リアルタイムログ

ログ記録はアプリケーション開発を支える基本的な構成要素です。開発の初期段階で洞察を提供し、プロダクションで発生する問題を理解するためにしばしば重要です。

Workersプラットフォームは、すべてのconsole.logと未捕捉の例外に加えて、イベント自体に関する情報をキャプチャします。

カスタムログの追加

デフォルトでは、Workerはリクエスト、レスポンス、および関連メタデータに関する詳細を含む実行ログを出力します。

さらに、コード全体にカスタムログを追加できます。Worker内の任意のconsole.logステートメントは、ダッシュボードまたはwrangler tailで表示されます。以下の例は、Workerリクエストハンドラー内のカスタムconsole.logを示しています。

export default {
async fetch(request) {
const { cf } = request;
const { city, country } = cf;
console.log(`リクエストは都市: ${city}、国: ${country} から来ました`);
return new Response("こんにちは、Worker!", {
headers: { "content-type": "text/plain" },
});
},
};

上記のコードをデプロイした後、ダッシュボードまたはwrangler tailでリアルタイムログを表示します。

ダッシュボードからログを表示

Cloudflareダッシュボードを使用して、デプロイされた任意のWorkerに関連するリアルタイムログを表示するには:

  1. Cloudflareダッシュボードにログインし、アカウントを選択します。
  2. アカウントホームで、Workers & Pagesに移動します。
  3. 概要で、Workerを選択し、ログを選択します。

wrangler tailを使用してログを表示

Wranglerを使用して、デプロイされた任意のWorkerに関連するリアルタイムログを表示するには:

  1. Workerプロジェクトディレクトリに移動します。
  2. npx wrangler tailを実行します。

これにより、アプリケーションへのすべての受信リクエストがローカルターミナルにログされます。

wrangler tailログの出力は構造化されたJSONオブジェクトです:

{
"outcome": "ok",
"scriptName": null,
"exceptions": [],
"logs": [],
"eventTimestamp": 1590680082349,
"event": {
"request": {
"url": "https://www.bytesized.xyz/",
"method": "GET",
"headers": {},
"cf": {}
}
}
}

出力をjqのようなツールにパイプすることで、特定の情報を探すためにリクエストをクエリおよび操作できます:

Terminal window
npx wrangler tail | jq .event.request.url
"https://www.bytesized.xyz/"
"https://www.bytesized.xyz/component---src-pages-index-js-a77e385e3bde5b78dbf6.js"
"https://www.bytesized.xyz/page-data/app-data.json"

wrangler tailの動作をニーズに合わせてカスタマイズできます。利用可能な設定オプションについては、wrangler tailのドキュメントを参照してください。

制限

注意点:

  • Workerのログは保存されません。いつでもストリームを開始および停止して表示できますが、持続しません。
  • Workerに高いトラフィックがある場合、リアルタイムログはサンプリングモードに入る可能性があります。これにより、一部のメッセージがドロップされ、ログに警告が表示されます。
  • Workerが使用しているDurable Objectsからのログはダッシュボードに表示されます。
  • 最大10クライアントが同時にWorkerのログを表示できます。これは、ダッシュボードセッションまたはwrangler tail呼び出しの組み合わせです。

ログの永続化

ログは2つの方法で永続化できます:

  1. Workers Logpush
  2. Tail Workers

Workers Logpushを使用すると、Workers Trace Event Logsをサポートされている宛先に送信できます。WorkerのTrace Events Logpushには、リクエストとレスポンスに関するメタデータ、非構造化のconsole.log()メッセージ、および未捕捉の例外が含まれます。

Logpushジョブの作成と構成方法については、Workers Logpushのドキュメントを参照してください。

Tail Workersを使用すると、アプリケーションロジックを含むプロデューサーWorker(Tail Workerが追跡するWorker)の呼び出し後にTail Workersを自動的に呼び出すことができます。プロデューサーが実行を終了した後のイベントをキャプチャします。データの形式を変更したり、フィルタリングしたり、任意のHTTPエンドポイントにイベントを送信できます。

Tail Workersの作成と構成方法については、Tail Workersのドキュメントを参照してください。

関連リソース

  • エラーと例外 - 一般的なWorkersエラーを確認します。
  • ローカル開発とテスト - Workersをローカルで開発およびテストします。
  • Logpush - Workers Trace Event Logsをサポートされている宛先にプッシュする方法を学びます。
  • Tail Workers - Tail Workersを接続してログを変換し、HTTPエンドポイントに送信する方法を学びます。
  • ソースマップとスタックトレース - ソースマップを有効にし、Workersのスタックトレースを生成する方法を学びます。