About evlog
The evlog skill guides developers working with evlog through logging design, implementation, and verification. It organizes references around wide events, structured errors, pipelines, framework adapters, and telemetry, with attention to version checks and operational details.
Key features
- 01Inspect versions and logging integrations
- 02Design wide events and structured errors
- 03Configure sampling, audits, and pipelines
- 04Guide framework adapters and plugins
- 05Run coverage checks and verification
Use cases
- 01Refactor scattered logs into wide events
- 02Configure production sampling and retries
- 03Integrate evlog with a framework and check coverage
- 04Investigate telemetry, plugins, or client logs
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill evlogAfter installing, type/evlogin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
agents/openai.yamlreferences/cli-advanced.mdextend.mdframeworks-adapters.mdsetup-core.mdsource-map.mdwide-events-errors.mdDetails
From the project READMEevlog
Use this skill when work touches evlog — wide events, structured errors, drains, sampling, audit trails, AI SDK / eve telemetry, CLI product telemetry, client logging, plugins, or @evlog/cli map coverage scoring.
Snapshot: [email protected], @evlog/[email protected], @evlog/[email protected] (verified 2026-10-01; no newer releases). Refresh from source-map.md if versions differ.
Workflow
- Inspect the local logging surface before changing code:
- Package versions for
evlog, optional@evlog/cli/@evlog/telemetry/@evlog/nuxthub, framework peers, and drain destinations in use. - Integration path: Nuxt/Nitro module, Next
createEvlog/withEvlog, TanStack Startevlog/nitro/v3, Hono/Express/Fastify/Elysia middleware, Workers, Astro/Lambda guides, standaloneinitLogger. - Patterns: scattered
console/pinolines vslog.setwide events,createError({ why, fix }), audits, AI wraps, eve hooks, client ingest, plugins.
- Package versions for
- Refresh docs when versions or APIs are unclear. Start from source-map.md.
- For install, three logging modes,
initLogger, and core APIs, use setup-core.md. - For wide-event design, sealing/
fork, structured errors, catalogs, and redaction, use wide-events-errors.md. - For framework wiring and adapter choice, use frameworks-adapters.md.
- For pipelines, sampling, audit, AI, client logs, and
evlog map/CI, use cli-advanced.md. - For plugins, stream, diagnostics, toolkit,
@evlog/telemetry, andevlog/eve, use extend.md.
Implementation Judgment
- Prefer one wide event per unit of work (
log.setthen auto-emitor manualemit) over many info lines in the same request/job/turn. - Group context into nested objects (
user,cart,payment) with meaningful keys—not flatuserId/cartIdsoup or a genericdatabag. - Use the right mode:
log.*for one-shots;createLogger/createRequestLoggerwhen you own the lifecycle; frameworkuseLogger/req.log/c.get('log')when middleware owns create+emit. - Tagged
log.info('tag', 'message')is console-only in pretty mode. Object form always hits drains. - Throw
createError({ message, status, why, fix, link?, code?, internal? })instead of bareError. Parse on clients withparseError. - After emit (or sampled drop), the logger is sealed—post-response
setis ignored. Uselog.fork(where available) for intentional background child events. - Libraries and shared packages: use
createLogger/ accept a logger; do not callinitLoggerand force a drain on the host. - Production: wrap adapters in
createDrainPipeline(batch + retry); enable head+tail sampling; keep errors and money/auth paths. - On Nuxt/Nitro/Next/TanStack Start/Hono, run
bunx @evlog/cli mapbefore large logging refactors—fix FIX FIRST first. Pin CLI version in CI.
Verification
Prefer the repo's existing checks. For meaningful evlog changes, include the relevant subset:
- Hit a route/job locally and confirm one wide event with expected nested fields (pretty in dev).
- Force a
createErrorpath and confirmwhy/fixin logs and clientparseError. bunx @evlog/cli map/doctorwhen changing entry-point coverage or setup.- Drain smoke (Axiom/Sentry/Loki/fs NDJSON) when changing pipelines; flush on shutdown.
- Sampling config check: errors and
keeprules still retained in production-shaped config. - Typecheck for
RequestLogger, typed fields, and catalog imports.