logging

作成者: cloudflare

ログの追加、デバッグ、またはSDKとコンテナランタイム全体でのLoggerの使用時に使用します。コンストラクターインジェクションパターン、子ロガーなどをカバーします。

npx skills add https://github.com/cloudflare/sandbox-sdk --skill logging

Logging

Pattern: Explicit Constructor Injection

Loggers are passed explicitly via constructor injection throughout the codebase. There is no global/ambient logger.

import type { Logger } from '@repo/shared';

class MyService {
  constructor(private logger: Logger) {}

  async doWork(context: WorkContext) {
    const childLogger = this.logger.child({ operation: 'work' });
    childLogger.info('Working', { context });
  }
}

Child loggers

Use logger.child({ ... }) to attach structured context that will appear on every log line from that child. Prefer child loggers at the boundary of a unit of work (request, operation, session) rather than re-passing context on every call.

Configuration

Two environment variables, both read once at startup:

VarValuesPurpose
SANDBOX_LOG_LEVELdebug | info | warn | errorMinimum level emitted
SANDBOX_LOG_FORMATjson | prettyOutput format

Use json in production (machine-parseable) and pretty for local dev.

In Tests

Use createNoOpLogger() from @repo/shared to silence logging in tests:

import { createNoOpLogger } from '@repo/shared';

const service = new MyService(createNoOpLogger());

Don't construct real loggers in unit tests — they add noise and can mask real failures with log output.

When Adding Logs

  • Log at info for significant lifecycle events (operation started/completed)
  • Log at debug for fine-grained tracing (request bodies, intermediate state)
  • Log at warn for recoverable anomalies
  • Log at error for failures that surface to the caller; include the error object as structured context: logger.error('Failed', { err })
  • Pass structured context as the second argument, not via string interpolation

cloudflareのその他のスキル

workerd-api-review
cloudflare
workerdのコードレビューにおけるパフォーマンス最適化、API設計と互換性、セキュリティ脆弱性、標準仕様準拠。tcmalloc対応を含む…
official
workerd-safety-review
cloudflare
workerdのコードレビューにおけるメモリ安全性、スレッド安全性、並行性、および重要な検出パターン。V8/KJ境界の危険性、ライフタイム管理などをカバー。
official
module-registry
cloudflare
workerdでモジュールレジストリを扱う際に読み込む — モジュールの解決、コンパイル、評価、登録の読み取り、変更、デバッグ、またはレビュー…
official
reproduce
cloudflare
cloudflare/agentsのGitHub Issueを再現するために、最小限のAgents/Workerプロジェクトをスキャフォールディングし、一時的なCloudflareアカウントにデプロイして、その後報告する…
official
local-explorer
cloudflare
ローカルエクスプローラーまたはローカルAPIに製品/リソースを追加する方法。新しいローカルAPIやUIルートを実装する際に使用します。
official
commit-categories
cloudflare
コミットを変更ログや「新機能」サマリーに分類するためのルール。変更ログやwhats-newコマンドでコミットを分類する前に必ず読み込む必要があります。提供するのは…
official
architecture
cloudflare
コードベースを初めてナビゲートするとき、新しいクライアントメソッドを追加するとき、新しいコンテナハンドラ/サービスを追加するとき、またはリクエストの流れを理解するときに使用します…
official
changesets
cloudflare
チェンジセットを作成する際、リリースを準備する際、またはバージョンを上げる際に使用します。参照するパッケージ、ユーザー向けのチェンジセット説明の書き方などをカバーします。
official