logging

Use ao adicionar logs, depurar ou trabalhar com o Logger no SDK e no runtime do contêiner. Abrange o padrão de injeção no construtor, loggers filhos,…

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

Mais skills de cloudflare

workerd-api-review
cloudflare
Otimização de desempenho, design e compatibilidade de API, vulnerabilidades de segurança e conformidade com especificações de padrões para revisão de código workerd. Abrange tcmalloc-aware…
official
workerd-safety-review
cloudflare
Segurança de memória, segurança de threads, concorrência e padrões críticos de detecção para revisão de código workerd. Abrange riscos de limite V8/KJ, gerenciamento de tempo de vida,…
official
module-registry
cloudflare
Carregar ao trabalhar com o registro de módulos no workerd — lendo, modificando, depurando ou revisando a resolução, compilação, avaliação ou registro de módulos…
official
reproduce
cloudflare
Reproduzir um problema do GitHub cloudflare/agents criando um projeto mínimo de Agents/Worker e implantando-o em uma conta temporária do Cloudflare, depois relatar…
official
local-explorer
cloudflare
Como adicionar produtos/recursos ao explorador local ou API local. Use ao implementar novas APIs locais ou rotas de interface sob…
official
commit-categories
cloudflare
Regras de categorização de commits para changelogs e resumos de "novidades". DEVE ser carregado antes de categorizar commits em comandos de changelog ou whats-new. Fornece…
official
architecture
cloudflare
Use ao navegar pelo código-fonte pela primeira vez
official
changesets
cloudflare
Use ao criar um changeset, preparar um release ou atualizar versões. Abrange quais pacotes referenciar, como escrever descrições de changeset voltadas ao usuário,…
official