[{"data":1,"prerenderedAt":4755},["ShallowReactive",2],{"navigation_docs":3,"-learn-wide-events":534,"-learn-wide-events-surround":4750},[4,30,80,128,308,440,499],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"CLI","\u002Fcli","3.cli",[85,88,93,98,103,108,113,118,123],{"title":36,"path":86,"stem":87,"icon":44},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":89,"path":90,"stem":91,"icon":92},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":94,"path":95,"stem":96,"icon":97},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":99,"path":100,"stem":101,"icon":102},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":104,"path":105,"stem":106,"icon":107},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":109,"path":110,"stem":111,"icon":112},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":114,"path":115,"stem":116,"icon":117},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":119,"path":120,"stem":121,"icon":122},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":124,"path":125,"stem":126,"icon":127},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":129,"path":130,"stem":131,"children":132,"page":29},"Integrate","\u002Fintegrate","4.integrate",[133,137,220],{"title":36,"path":134,"stem":135,"icon":136},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[142,145,175,200],{"title":36,"path":143,"stem":144,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":146,"path":147,"stem":148,"children":149,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[150,155,160,165,170],{"title":151,"path":152,"stem":153,"icon":154},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":156,"path":157,"stem":158,"icon":159},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":161,"path":162,"stem":163,"icon":164},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":166,"path":167,"stem":168,"icon":169},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":171,"path":172,"stem":173,"icon":174},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":176,"path":177,"stem":178,"children":179,"page":29},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[180,185,190,195],{"title":181,"path":182,"stem":183,"icon":184},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":186,"path":187,"stem":188,"icon":189},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":191,"path":192,"stem":193,"icon":194},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":196,"path":197,"stem":198,"icon":199},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":201,"path":202,"stem":203,"children":204,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[205,210,215],{"title":206,"path":207,"stem":208,"icon":209},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":211,"path":212,"stem":213,"icon":214},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":216,"path":217,"stem":218,"icon":219},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":221,"path":222,"stem":223,"children":224,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[225,229,234,239,244,249,254,259,264,269,274,279,284,289,293,298,303],{"title":36,"path":226,"stem":227,"icon":228},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":230,"path":231,"stem":232,"icon":233},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":235,"path":236,"stem":237,"icon":238},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":240,"path":241,"stem":242,"icon":243},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":245,"path":246,"stem":247,"icon":248},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":250,"path":251,"stem":252,"icon":253},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":255,"path":256,"stem":257,"icon":258},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":260,"path":261,"stem":262,"icon":263},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":265,"path":266,"stem":267,"icon":268},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":270,"path":271,"stem":272,"icon":273},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":275,"path":276,"stem":277,"icon":278},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":280,"path":281,"stem":282,"icon":283},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":285,"path":286,"stem":287,"icon":288},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":290,"path":291,"stem":292,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":294,"path":295,"stem":296,"icon":297},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":299,"path":300,"stem":301,"icon":302},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":304,"path":305,"stem":306,"icon":307},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":309,"path":310,"stem":311,"children":312,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[313,316,321,350,377,409,430,435],{"title":36,"path":314,"stem":315,"icon":102},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":317,"path":318,"stem":319,"icon":320},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":322,"icon":323,"path":324,"stem":325,"children":326,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[327,330,335,340,345],{"title":36,"path":328,"stem":329,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":331,"path":332,"stem":333,"icon":334},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":336,"path":337,"stem":338,"icon":339},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":341,"path":342,"stem":343,"icon":344},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":346,"path":347,"stem":348,"icon":349},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":351,"icon":352,"path":353,"stem":354,"children":355,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[356,359,364,369,373],{"title":36,"path":357,"stem":358,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":360,"path":361,"stem":362,"icon":363},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":365,"path":366,"stem":367,"icon":368},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":370,"path":371,"stem":372,"icon":320},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":374,"path":375,"stem":376,"icon":107},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":378,"icon":379,"path":380,"stem":381,"children":382,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[383,386,391,396,401,405],{"title":36,"path":384,"stem":385,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":387,"path":388,"stem":389,"icon":390},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":392,"path":393,"stem":394,"icon":395},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":397,"path":398,"stem":399,"icon":400},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":402,"path":403,"stem":404,"icon":379},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":406,"path":407,"stem":408,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":346,"icon":107,"path":410,"stem":411,"children":412,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[413,416,421,426],{"title":36,"path":414,"stem":415,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":417,"path":418,"stem":419,"icon":420},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":422,"path":423,"stem":424,"icon":425},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":427,"path":428,"stem":429,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":431,"path":432,"stem":433,"icon":434},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":436,"path":437,"stem":438,"icon":439},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":441,"path":442,"stem":443,"children":444,"page":29},"Extend","\u002Fextend","6.extend",[445,449,454,459,463,468,472,476,480,484,489,494],{"title":36,"path":446,"stem":447,"icon":448},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":450,"path":451,"stem":452,"icon":453},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":455,"path":456,"stem":457,"icon":458},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":460,"path":461,"stem":462,"icon":453},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":464,"path":465,"stem":466,"icon":467},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":406,"path":469,"stem":470,"icon":471},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":473,"path":474,"stem":475,"icon":448},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":477,"path":478,"stem":479,"icon":434},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":481,"path":482,"stem":483,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":485,"path":486,"stem":487,"icon":488},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":490,"path":491,"stem":492,"icon":493},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":495,"path":496,"stem":497,"icon":498},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":427,"path":500,"stem":501,"children":502,"page":29},"\u002Freference","7.reference",[503,508,511,516,520,525,529],{"title":504,"path":505,"stem":506,"icon":507},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":374,"path":509,"stem":510,"icon":107},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":512,"path":513,"stem":514,"icon":515},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":517,"path":518,"stem":519,"icon":379},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":521,"path":522,"stem":523,"icon":524},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":526,"path":527,"stem":528,"icon":434},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":530,"path":531,"stem":532,"icon":533},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"id":535,"title":46,"body":536,"description":4740,"extension":4741,"links":4742,"meta":4746,"navigation":4747,"path":47,"seo":4748,"stem":48,"__hash__":4749},"docs\u002F2.learn\u002F2.wide-events.md",{"type":537,"value":538,"toc":4711},"minimark",[539,543,557,603,608,611,614,816,819,846,849,1348,1351,1355,1363,1370,1701,1708,1728,1937,1949,1956,1963,2159,2167,2171,2219,2238,2244,2273,2298,2305,2321,2328,2486,2490,2503,2507,2510,2708,2718,2722,2725,2813,2817,2820,2987,2991,2994,3170,3173,3177,3273,3277,3436,3440,3447,3844,3848,3851,4246,4250,4274,4359,4380,4384,4387,4681,4685,4707],[540,541,542],"p",{},"Wide events are the core concept behind evlog. Instead of scattering logs throughout your codebase, you accumulate context over any unit of work, whether a request, script, job, or workflow, and emit a single, comprehensive log event.",[544,545,548,549,553,554,556],"callout",{"color":546,"icon":547},"neutral","i-lucide-globe","Not running an HTTP framework? See ",[550,551,552],"a",{"href":291},"Standalone TypeScript"," and ",[550,555,285],{"href":286}," — wide events apply just as cleanly outside of request lifecycles.",[558,559,562,565,590],"prompt",{":actions":560,"description":561,"icon":49},"[\"copy\",\"cursor\",\"claude\"]","Convert my request handlers to wide events",[540,563,564],{},"Convert my existing request handlers from scattered logs to evlog wide events.",[566,567,568,572,575,578,581,584,587],"ul",{},[569,570,571],"li",{},"Find handlers that call console.log\u002Flogger.info multiple times per request",[569,573,574],{},"Replace those with a single useLogger(event) (or framework equivalent) at the top",[569,576,577],{},"Use log.set({ user, cart, payment, ... }) to accumulate context as the request progresses",[569,579,580],{},"Group related fields into nested objects (user, cart, payment) instead of flat keys",[569,582,583],{},"Remove redundant info-level logs once the wide event captures the same information",[569,585,586],{},"Keep error logs that capture distinct failure cases via log.error()",[569,588,589],{},"Trust the framework integration to auto-emit one wide event per request",[540,591,592,593,598,599],{},"Docs: ",[550,594,595],{"href":595,"rel":596},"https:\u002F\u002Fwww.evlog.dev\u002Flearn\u002Fwide-events",[597],"nofollow","\nBest practices: ",[550,600,601],{"href":601,"rel":602},"https:\u002F\u002Fwww.evlog.dev\u002Freference\u002Fbest-practices",[597],[604,605,607],"h2",{"id":606},"why-wide-events","Why Wide Events?",[609,610],"wide-event-collapse",{},[540,612,613],{},"Traditional logging creates noise:",[615,616,622],"pre",{"className":617,"code":618,"filename":619,"language":620,"meta":621,"style":621},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","logger.info('Job started')\nlogger.info('User authenticated', { userId: user.id })\nlogger.info('Fetching data', { source: 'postgres' })\nlogger.info('Processing records')\nlogger.info('Processing complete')\nlogger.info('Job finished', { duration: 234 })\n","src\u002Fservice.ts","typescript","",[623,624,625,657,701,741,761,781],"code",{"__ignoreMap":621},[626,627,630,634,638,642,645,648,652,654],"span",{"class":628,"line":629},"line",1,[626,631,633],{"class":632},"sTEyZ","logger",[626,635,637],{"class":636},"sMK4o",".",[626,639,641],{"class":640},"s2Zo4","info",[626,643,644],{"class":632},"(",[626,646,647],{"class":636},"'",[626,649,651],{"class":650},"sfazB","Job started",[626,653,647],{"class":636},[626,655,656],{"class":632},")\n",[626,658,660,662,664,666,668,670,673,675,678,681,685,688,691,693,696,699],{"class":628,"line":659},2,[626,661,633],{"class":632},[626,663,637],{"class":636},[626,665,641],{"class":640},[626,667,644],{"class":632},[626,669,647],{"class":636},[626,671,672],{"class":650},"User authenticated",[626,674,647],{"class":636},[626,676,677],{"class":636},",",[626,679,680],{"class":636}," {",[626,682,684],{"class":683},"swJcz"," userId",[626,686,687],{"class":636},":",[626,689,690],{"class":632}," user",[626,692,637],{"class":636},[626,694,695],{"class":632},"id ",[626,697,698],{"class":636},"}",[626,700,656],{"class":632},[626,702,704,706,708,710,712,714,717,719,721,723,726,728,731,734,736,739],{"class":628,"line":703},3,[626,705,633],{"class":632},[626,707,637],{"class":636},[626,709,641],{"class":640},[626,711,644],{"class":632},[626,713,647],{"class":636},[626,715,716],{"class":650},"Fetching data",[626,718,647],{"class":636},[626,720,677],{"class":636},[626,722,680],{"class":636},[626,724,725],{"class":683}," source",[626,727,687],{"class":636},[626,729,730],{"class":636}," '",[626,732,733],{"class":650},"postgres",[626,735,647],{"class":636},[626,737,738],{"class":636}," }",[626,740,656],{"class":632},[626,742,744,746,748,750,752,754,757,759],{"class":628,"line":743},4,[626,745,633],{"class":632},[626,747,637],{"class":636},[626,749,641],{"class":640},[626,751,644],{"class":632},[626,753,647],{"class":636},[626,755,756],{"class":650},"Processing records",[626,758,647],{"class":636},[626,760,656],{"class":632},[626,762,764,766,768,770,772,774,777,779],{"class":628,"line":763},5,[626,765,633],{"class":632},[626,767,637],{"class":636},[626,769,641],{"class":640},[626,771,644],{"class":632},[626,773,647],{"class":636},[626,775,776],{"class":650},"Processing complete",[626,778,647],{"class":636},[626,780,656],{"class":632},[626,782,784,786,788,790,792,794,797,799,801,803,806,808,812,814],{"class":628,"line":783},6,[626,785,633],{"class":632},[626,787,637],{"class":636},[626,789,641],{"class":640},[626,791,644],{"class":632},[626,793,647],{"class":636},[626,795,796],{"class":650},"Job finished",[626,798,647],{"class":636},[626,800,677],{"class":636},[626,802,680],{"class":636},[626,804,805],{"class":683}," duration",[626,807,687],{"class":636},[626,809,811],{"class":810},"sbssI"," 234",[626,813,738],{"class":636},[626,815,656],{"class":632},[540,817,818],{},"This approach has problems:",[566,820,821,828,834,840],{},[569,822,823,827],{},[824,825,826],"strong",{},"Scattered context",": Information is spread across multiple log lines",[569,829,830,833],{},[824,831,832],{},"Hard to correlate",": Matching logs to operations requires IDs everywhere",[569,835,836,839],{},[824,837,838],{},"Noise",": 10+ log lines per operation makes finding issues harder",[569,841,842,845],{},[824,843,844],{},"Incomplete",": Some logs might be missing if errors occur",[540,847,848],{},"Wide events solve this:",[850,851,852,1062,1233],"code-group",{},[615,853,856],{"className":617,"code":854,"filename":855,"language":620,"meta":621,"style":621},"import { useLogger } from 'evlog'\n\nconst log = useLogger(event)\n\nlog.set({ user: { id: 1, plan: 'pro' } })\nlog.set({ cart: { id: 42, items: 3, total: 9999 } })\nlog.set({ payment: { method: 'card', status: 'success' } })\n","server\u002Fapi\u002Fcheckout.post.ts",[623,857,858,882,888,905,909,958,1010],{"__ignoreMap":621},[626,859,860,864,866,869,871,874,876,879],{"class":628,"line":629},[626,861,863],{"class":862},"s7zQu","import",[626,865,680],{"class":636},[626,867,868],{"class":632}," useLogger",[626,870,738],{"class":636},[626,872,873],{"class":862}," from",[626,875,730],{"class":636},[626,877,878],{"class":650},"evlog",[626,880,881],{"class":636},"'\n",[626,883,884],{"class":628,"line":659},[626,885,887],{"emptyLinePlaceholder":886},true,"\n",[626,889,890,894,897,900,902],{"class":628,"line":703},[626,891,893],{"class":892},"spNyl","const",[626,895,896],{"class":632}," log ",[626,898,899],{"class":636},"=",[626,901,868],{"class":640},[626,903,904],{"class":632},"(event)\n",[626,906,907],{"class":628,"line":743},[626,908,887],{"emptyLinePlaceholder":886},[626,910,911,914,916,919,921,924,926,928,930,933,935,938,940,943,945,947,950,952,954,956],{"class":628,"line":763},[626,912,913],{"class":632},"log",[626,915,637],{"class":636},[626,917,918],{"class":640},"set",[626,920,644],{"class":632},[626,922,923],{"class":636},"{",[626,925,690],{"class":683},[626,927,687],{"class":636},[626,929,680],{"class":636},[626,931,932],{"class":683}," id",[626,934,687],{"class":636},[626,936,937],{"class":810}," 1",[626,939,677],{"class":636},[626,941,942],{"class":683}," plan",[626,944,687],{"class":636},[626,946,730],{"class":636},[626,948,949],{"class":650},"pro",[626,951,647],{"class":636},[626,953,738],{"class":636},[626,955,738],{"class":636},[626,957,656],{"class":632},[626,959,960,962,964,966,968,970,973,975,977,979,981,984,986,989,991,994,996,999,1001,1004,1006,1008],{"class":628,"line":783},[626,961,913],{"class":632},[626,963,637],{"class":636},[626,965,918],{"class":640},[626,967,644],{"class":632},[626,969,923],{"class":636},[626,971,972],{"class":683}," cart",[626,974,687],{"class":636},[626,976,680],{"class":636},[626,978,932],{"class":683},[626,980,687],{"class":636},[626,982,983],{"class":810}," 42",[626,985,677],{"class":636},[626,987,988],{"class":683}," items",[626,990,687],{"class":636},[626,992,993],{"class":810}," 3",[626,995,677],{"class":636},[626,997,998],{"class":683}," total",[626,1000,687],{"class":636},[626,1002,1003],{"class":810}," 9999",[626,1005,738],{"class":636},[626,1007,738],{"class":636},[626,1009,656],{"class":632},[626,1011,1013,1015,1017,1019,1021,1023,1026,1028,1030,1033,1035,1037,1040,1042,1044,1047,1049,1051,1054,1056,1058,1060],{"class":628,"line":1012},7,[626,1014,913],{"class":632},[626,1016,637],{"class":636},[626,1018,918],{"class":640},[626,1020,644],{"class":632},[626,1022,923],{"class":636},[626,1024,1025],{"class":683}," payment",[626,1027,687],{"class":636},[626,1029,680],{"class":636},[626,1031,1032],{"class":683}," method",[626,1034,687],{"class":636},[626,1036,730],{"class":636},[626,1038,1039],{"class":650},"card",[626,1041,647],{"class":636},[626,1043,677],{"class":636},[626,1045,1046],{"class":683}," status",[626,1048,687],{"class":636},[626,1050,730],{"class":636},[626,1052,1053],{"class":650},"success",[626,1055,647],{"class":636},[626,1057,738],{"class":636},[626,1059,738],{"class":636},[626,1061,656],{"class":632},[615,1063,1066],{"className":617,"code":1064,"filename":1065,"language":620,"meta":621,"style":621},"import { createLogger } from 'evlog'\n\nconst log = createLogger({ jobId: 'sync-001', queue: 'emails' })\n\nlog.set({ source: 'postgres', target: 's3' })\nlog.set({ records: { found: 1250, synced: 1250 } })\nlog.emit()\n","scripts\u002Fsync-data.ts",[623,1067,1068,1087,1091,1135,1139,1179,1221],{"__ignoreMap":621},[626,1069,1070,1072,1074,1077,1079,1081,1083,1085],{"class":628,"line":629},[626,1071,863],{"class":862},[626,1073,680],{"class":636},[626,1075,1076],{"class":632}," createLogger",[626,1078,738],{"class":636},[626,1080,873],{"class":862},[626,1082,730],{"class":636},[626,1084,878],{"class":650},[626,1086,881],{"class":636},[626,1088,1089],{"class":628,"line":659},[626,1090,887],{"emptyLinePlaceholder":886},[626,1092,1093,1095,1097,1099,1101,1103,1105,1108,1110,1112,1115,1117,1119,1122,1124,1126,1129,1131,1133],{"class":628,"line":703},[626,1094,893],{"class":892},[626,1096,896],{"class":632},[626,1098,899],{"class":636},[626,1100,1076],{"class":640},[626,1102,644],{"class":632},[626,1104,923],{"class":636},[626,1106,1107],{"class":683}," jobId",[626,1109,687],{"class":636},[626,1111,730],{"class":636},[626,1113,1114],{"class":650},"sync-001",[626,1116,647],{"class":636},[626,1118,677],{"class":636},[626,1120,1121],{"class":683}," queue",[626,1123,687],{"class":636},[626,1125,730],{"class":636},[626,1127,1128],{"class":650},"emails",[626,1130,647],{"class":636},[626,1132,738],{"class":636},[626,1134,656],{"class":632},[626,1136,1137],{"class":628,"line":743},[626,1138,887],{"emptyLinePlaceholder":886},[626,1140,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1166,1168,1170,1173,1175,1177],{"class":628,"line":763},[626,1142,913],{"class":632},[626,1144,637],{"class":636},[626,1146,918],{"class":640},[626,1148,644],{"class":632},[626,1150,923],{"class":636},[626,1152,725],{"class":683},[626,1154,687],{"class":636},[626,1156,730],{"class":636},[626,1158,733],{"class":650},[626,1160,647],{"class":636},[626,1162,677],{"class":636},[626,1164,1165],{"class":683}," target",[626,1167,687],{"class":636},[626,1169,730],{"class":636},[626,1171,1172],{"class":650},"s3",[626,1174,647],{"class":636},[626,1176,738],{"class":636},[626,1178,656],{"class":632},[626,1180,1181,1183,1185,1187,1189,1191,1194,1196,1198,1201,1203,1206,1208,1211,1213,1215,1217,1219],{"class":628,"line":783},[626,1182,913],{"class":632},[626,1184,637],{"class":636},[626,1186,918],{"class":640},[626,1188,644],{"class":632},[626,1190,923],{"class":636},[626,1192,1193],{"class":683}," records",[626,1195,687],{"class":636},[626,1197,680],{"class":636},[626,1199,1200],{"class":683}," found",[626,1202,687],{"class":636},[626,1204,1205],{"class":810}," 1250",[626,1207,677],{"class":636},[626,1209,1210],{"class":683}," synced",[626,1212,687],{"class":636},[626,1214,1205],{"class":810},[626,1216,738],{"class":636},[626,1218,738],{"class":636},[626,1220,656],{"class":632},[626,1222,1223,1225,1227,1230],{"class":628,"line":1012},[626,1224,913],{"class":632},[626,1226,637],{"class":636},[626,1228,1229],{"class":640},"emit",[626,1231,1232],{"class":632},"()\n",[615,1234,1239],{"className":1235,"code":1236,"filename":1237,"language":1238,"meta":621,"style":621},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[INFO] POST \u002Fapi\u002Fcheckout (234ms)\n  user: { id: 1, plan: 'pro' }\n  cart: { id: 42, items: 3, total: 9999 }\n  payment: { method: 'card', status: 'success' }\n  status: 200\n","Output","bash",[623,1240,1241,1261,1286,1311,1340],{"__ignoreMap":621},[626,1242,1243,1246,1249,1252,1255,1259],{"class":628,"line":629},[626,1244,1245],{"class":636},"[",[626,1247,1248],{"class":632},"INFO",[626,1250,1251],{"class":636},"]",[626,1253,1254],{"class":632}," POST \u002Fapi\u002Fcheckout (",[626,1256,1258],{"class":1257},"sBMFI","234ms",[626,1260,656],{"class":632},[626,1262,1263,1266,1268,1271,1274,1277,1279,1281,1283],{"class":628,"line":659},[626,1264,1265],{"class":1257},"  user:",[626,1267,680],{"class":650},[626,1269,1270],{"class":650}," id:",[626,1272,1273],{"class":650}," 1,",[626,1275,1276],{"class":650}," plan:",[626,1278,730],{"class":636},[626,1280,949],{"class":650},[626,1282,647],{"class":636},[626,1284,1285],{"class":650}," }\n",[626,1287,1288,1291,1293,1295,1298,1301,1304,1307,1309],{"class":628,"line":703},[626,1289,1290],{"class":1257},"  cart:",[626,1292,680],{"class":650},[626,1294,1270],{"class":650},[626,1296,1297],{"class":650}," 42,",[626,1299,1300],{"class":650}," items:",[626,1302,1303],{"class":650}," 3,",[626,1305,1306],{"class":650}," total:",[626,1308,1003],{"class":810},[626,1310,1285],{"class":650},[626,1312,1313,1316,1318,1321,1323,1325,1327,1329,1332,1334,1336,1338],{"class":628,"line":743},[626,1314,1315],{"class":1257},"  payment:",[626,1317,680],{"class":650},[626,1319,1320],{"class":650}," method:",[626,1322,730],{"class":636},[626,1324,1039],{"class":650},[626,1326,647],{"class":636},[626,1328,677],{"class":650},[626,1330,1331],{"class":650}," status:",[626,1333,730],{"class":636},[626,1335,1053],{"class":650},[626,1337,647],{"class":636},[626,1339,1285],{"class":650},[626,1341,1342,1345],{"class":628,"line":763},[626,1343,1344],{"class":1257},"  status:",[626,1346,1347],{"class":810}," 200\n",[540,1349,1350],{},"One log, all context. Everything you need to understand what happened.",[604,1352,1354],{"id":1353},"creating-wide-events","Creating Wide Events",[1356,1357,1359,1362],"h3",{"id":1358},"createlogger-general-purpose",[623,1360,1361],{},"createLogger"," (General Purpose)",[540,1364,1365,1366,1369],{},"Use ",[623,1367,1368],{},"createLogger()"," for scripts, background jobs, queue workers, cron jobs, or any operation where you manage the lifecycle:",[615,1371,1374],{"className":617,"code":1372,"filename":1373,"language":620,"meta":621,"style":621},"import { initLogger, createLogger } from 'evlog'\n\ninitLogger({ env: { service: 'migrate' } })\n\nconst log = createLogger({ task: 'user-migration' })\n\nconst users = await db.query('SELECT * FROM legacy_users')\nlog.set({ found: users.length })\n\nlet migrated = 0\nfor (const user of users) {\n  await newDb.upsert({ id: user.id, email: user.email, plan: user.plan })\n  migrated++\n}\n\nlog.set({ migrated, status: 'complete' })\nlog.emit()\n","scripts\u002Fmigrate-users.ts",[623,1375,1376,1399,1403,1437,1441,1471,1475,1506,1535,1540,1554,1577,1637,1646,1652,1657,1690],{"__ignoreMap":621},[626,1377,1378,1380,1382,1385,1387,1389,1391,1393,1395,1397],{"class":628,"line":629},[626,1379,863],{"class":862},[626,1381,680],{"class":636},[626,1383,1384],{"class":632}," initLogger",[626,1386,677],{"class":636},[626,1388,1076],{"class":632},[626,1390,738],{"class":636},[626,1392,873],{"class":862},[626,1394,730],{"class":636},[626,1396,878],{"class":650},[626,1398,881],{"class":636},[626,1400,1401],{"class":628,"line":659},[626,1402,887],{"emptyLinePlaceholder":886},[626,1404,1405,1408,1410,1412,1415,1417,1419,1422,1424,1426,1429,1431,1433,1435],{"class":628,"line":703},[626,1406,1407],{"class":640},"initLogger",[626,1409,644],{"class":632},[626,1411,923],{"class":636},[626,1413,1414],{"class":683}," env",[626,1416,687],{"class":636},[626,1418,680],{"class":636},[626,1420,1421],{"class":683}," service",[626,1423,687],{"class":636},[626,1425,730],{"class":636},[626,1427,1428],{"class":650},"migrate",[626,1430,647],{"class":636},[626,1432,738],{"class":636},[626,1434,738],{"class":636},[626,1436,656],{"class":632},[626,1438,1439],{"class":628,"line":743},[626,1440,887],{"emptyLinePlaceholder":886},[626,1442,1443,1445,1447,1449,1451,1453,1455,1458,1460,1462,1465,1467,1469],{"class":628,"line":763},[626,1444,893],{"class":892},[626,1446,896],{"class":632},[626,1448,899],{"class":636},[626,1450,1076],{"class":640},[626,1452,644],{"class":632},[626,1454,923],{"class":636},[626,1456,1457],{"class":683}," task",[626,1459,687],{"class":636},[626,1461,730],{"class":636},[626,1463,1464],{"class":650},"user-migration",[626,1466,647],{"class":636},[626,1468,738],{"class":636},[626,1470,656],{"class":632},[626,1472,1473],{"class":628,"line":783},[626,1474,887],{"emptyLinePlaceholder":886},[626,1476,1477,1479,1482,1484,1487,1490,1492,1495,1497,1499,1502,1504],{"class":628,"line":1012},[626,1478,893],{"class":892},[626,1480,1481],{"class":632}," users ",[626,1483,899],{"class":636},[626,1485,1486],{"class":862}," await",[626,1488,1489],{"class":632}," db",[626,1491,637],{"class":636},[626,1493,1494],{"class":640},"query",[626,1496,644],{"class":632},[626,1498,647],{"class":636},[626,1500,1501],{"class":650},"SELECT * FROM legacy_users",[626,1503,647],{"class":636},[626,1505,656],{"class":632},[626,1507,1509,1511,1513,1515,1517,1519,1521,1523,1526,1528,1531,1533],{"class":628,"line":1508},8,[626,1510,913],{"class":632},[626,1512,637],{"class":636},[626,1514,918],{"class":640},[626,1516,644],{"class":632},[626,1518,923],{"class":636},[626,1520,1200],{"class":683},[626,1522,687],{"class":636},[626,1524,1525],{"class":632}," users",[626,1527,637],{"class":636},[626,1529,1530],{"class":632},"length ",[626,1532,698],{"class":636},[626,1534,656],{"class":632},[626,1536,1538],{"class":628,"line":1537},9,[626,1539,887],{"emptyLinePlaceholder":886},[626,1541,1543,1546,1549,1551],{"class":628,"line":1542},10,[626,1544,1545],{"class":892},"let",[626,1547,1548],{"class":632}," migrated ",[626,1550,899],{"class":636},[626,1552,1553],{"class":810}," 0\n",[626,1555,1557,1560,1563,1565,1568,1571,1574],{"class":628,"line":1556},11,[626,1558,1559],{"class":862},"for",[626,1561,1562],{"class":632}," (",[626,1564,893],{"class":892},[626,1566,1567],{"class":632}," user ",[626,1569,1570],{"class":636},"of",[626,1572,1573],{"class":632}," users) ",[626,1575,1576],{"class":636},"{\n",[626,1578,1580,1583,1586,1588,1591,1593,1595,1597,1599,1601,1603,1606,1608,1611,1613,1615,1617,1620,1622,1624,1626,1628,1630,1633,1635],{"class":628,"line":1579},12,[626,1581,1582],{"class":862},"  await",[626,1584,1585],{"class":632}," newDb",[626,1587,637],{"class":636},[626,1589,1590],{"class":640},"upsert",[626,1592,644],{"class":683},[626,1594,923],{"class":636},[626,1596,932],{"class":683},[626,1598,687],{"class":636},[626,1600,690],{"class":632},[626,1602,637],{"class":636},[626,1604,1605],{"class":632},"id",[626,1607,677],{"class":636},[626,1609,1610],{"class":683}," email",[626,1612,687],{"class":636},[626,1614,690],{"class":632},[626,1616,637],{"class":636},[626,1618,1619],{"class":632},"email",[626,1621,677],{"class":636},[626,1623,942],{"class":683},[626,1625,687],{"class":636},[626,1627,690],{"class":632},[626,1629,637],{"class":636},[626,1631,1632],{"class":632},"plan",[626,1634,738],{"class":636},[626,1636,656],{"class":683},[626,1638,1640,1643],{"class":628,"line":1639},13,[626,1641,1642],{"class":632},"  migrated",[626,1644,1645],{"class":636},"++\n",[626,1647,1649],{"class":628,"line":1648},14,[626,1650,1651],{"class":636},"}\n",[626,1653,1655],{"class":628,"line":1654},15,[626,1656,887],{"emptyLinePlaceholder":886},[626,1658,1660,1662,1664,1666,1668,1670,1673,1675,1677,1679,1681,1684,1686,1688],{"class":628,"line":1659},16,[626,1661,913],{"class":632},[626,1663,637],{"class":636},[626,1665,918],{"class":640},[626,1667,644],{"class":632},[626,1669,923],{"class":636},[626,1671,1672],{"class":632}," migrated",[626,1674,677],{"class":636},[626,1676,1046],{"class":683},[626,1678,687],{"class":636},[626,1680,730],{"class":636},[626,1682,1683],{"class":650},"complete",[626,1685,647],{"class":636},[626,1687,738],{"class":636},[626,1689,656],{"class":632},[626,1691,1693,1695,1697,1699],{"class":628,"line":1692},17,[626,1694,913],{"class":632},[626,1696,637],{"class":636},[626,1698,1229],{"class":640},[626,1700,1232],{"class":632},[1356,1702,1704,1707],{"id":1703},"createrequestlogger-http-contexts",[623,1705,1706],{},"createRequestLogger"," (HTTP Contexts)",[540,1709,1365,1710,1713,1714,1716,1717,1720,1721,1724,1725,687],{},[623,1711,1712],{},"createRequestLogger()"," when working with HTTP requests outside of a framework integration. It's a thin wrapper around ",[623,1715,1361],{}," that pre-populates ",[623,1718,1719],{},"method",", ",[623,1722,1723],{},"path",", and ",[623,1726,1727],{},"requestId",[615,1729,1732],{"className":617,"code":1730,"filename":1731,"language":620,"meta":621,"style":621},"import { initLogger, createRequestLogger } from 'evlog'\n\ninitLogger({ env: { service: 'my-worker' } })\n\nconst log = createRequestLogger({ method: 'POST', path: '\u002Fapi\u002Fcheckout' })\n\nlog.set({ user: { id: 1, plan: 'pro' } })\nlog.set({ cart: { items: 3, total: 9999 } })\n\nlog.emit()\n","src\u002Fworker.ts",[623,1733,1734,1757,1761,1792,1796,1839,1843,1885,1923,1927],{"__ignoreMap":621},[626,1735,1736,1738,1740,1742,1744,1747,1749,1751,1753,1755],{"class":628,"line":629},[626,1737,863],{"class":862},[626,1739,680],{"class":636},[626,1741,1384],{"class":632},[626,1743,677],{"class":636},[626,1745,1746],{"class":632}," createRequestLogger",[626,1748,738],{"class":636},[626,1750,873],{"class":862},[626,1752,730],{"class":636},[626,1754,878],{"class":650},[626,1756,881],{"class":636},[626,1758,1759],{"class":628,"line":659},[626,1760,887],{"emptyLinePlaceholder":886},[626,1762,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781,1784,1786,1788,1790],{"class":628,"line":703},[626,1764,1407],{"class":640},[626,1766,644],{"class":632},[626,1768,923],{"class":636},[626,1770,1414],{"class":683},[626,1772,687],{"class":636},[626,1774,680],{"class":636},[626,1776,1421],{"class":683},[626,1778,687],{"class":636},[626,1780,730],{"class":636},[626,1782,1783],{"class":650},"my-worker",[626,1785,647],{"class":636},[626,1787,738],{"class":636},[626,1789,738],{"class":636},[626,1791,656],{"class":632},[626,1793,1794],{"class":628,"line":743},[626,1795,887],{"emptyLinePlaceholder":886},[626,1797,1798,1800,1802,1804,1806,1808,1810,1812,1814,1816,1819,1821,1823,1826,1828,1830,1833,1835,1837],{"class":628,"line":763},[626,1799,893],{"class":892},[626,1801,896],{"class":632},[626,1803,899],{"class":636},[626,1805,1746],{"class":640},[626,1807,644],{"class":632},[626,1809,923],{"class":636},[626,1811,1032],{"class":683},[626,1813,687],{"class":636},[626,1815,730],{"class":636},[626,1817,1818],{"class":650},"POST",[626,1820,647],{"class":636},[626,1822,677],{"class":636},[626,1824,1825],{"class":683}," path",[626,1827,687],{"class":636},[626,1829,730],{"class":636},[626,1831,1832],{"class":650},"\u002Fapi\u002Fcheckout",[626,1834,647],{"class":636},[626,1836,738],{"class":636},[626,1838,656],{"class":632},[626,1840,1841],{"class":628,"line":783},[626,1842,887],{"emptyLinePlaceholder":886},[626,1844,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883],{"class":628,"line":1012},[626,1846,913],{"class":632},[626,1848,637],{"class":636},[626,1850,918],{"class":640},[626,1852,644],{"class":632},[626,1854,923],{"class":636},[626,1856,690],{"class":683},[626,1858,687],{"class":636},[626,1860,680],{"class":636},[626,1862,932],{"class":683},[626,1864,687],{"class":636},[626,1866,937],{"class":810},[626,1868,677],{"class":636},[626,1870,942],{"class":683},[626,1872,687],{"class":636},[626,1874,730],{"class":636},[626,1876,949],{"class":650},[626,1878,647],{"class":636},[626,1880,738],{"class":636},[626,1882,738],{"class":636},[626,1884,656],{"class":632},[626,1886,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921],{"class":628,"line":1508},[626,1888,913],{"class":632},[626,1890,637],{"class":636},[626,1892,918],{"class":640},[626,1894,644],{"class":632},[626,1896,923],{"class":636},[626,1898,972],{"class":683},[626,1900,687],{"class":636},[626,1902,680],{"class":636},[626,1904,988],{"class":683},[626,1906,687],{"class":636},[626,1908,993],{"class":810},[626,1910,677],{"class":636},[626,1912,998],{"class":683},[626,1914,687],{"class":636},[626,1916,1003],{"class":810},[626,1918,738],{"class":636},[626,1920,738],{"class":636},[626,1922,656],{"class":632},[626,1924,1925],{"class":628,"line":1537},[626,1926,887],{"emptyLinePlaceholder":886},[626,1928,1929,1931,1933,1935],{"class":628,"line":1542},[626,1930,913],{"class":632},[626,1932,637],{"class":636},[626,1934,1229],{"class":640},[626,1936,1232],{"class":632},[544,1938,1939,1940,553,1942,1944,1945,1948],{"color":641,"icon":13},"Both ",[623,1941,1361],{},[623,1943,1706],{}," require a manual ",[623,1946,1947],{},"log.emit()"," call. The event won't be emitted until you call it.",[1356,1950,1952,1955],{"id":1951},"uselogger-retrieving-the-request-logger",[623,1953,1954],{},"useLogger"," (Retrieving the Request Logger)",[540,1957,1958,1959,1962],{},"When using a framework integration (Nuxt, Hono, Express, etc.), the middleware creates a wide event logger automatically on each request. ",[623,1960,1961],{},"useLogger(event)"," retrieves that logger from the request context:",[615,1964,1966],{"className":617,"code":1965,"filename":855,"language":620,"meta":621,"style":621},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  return { success: true }\n  \u002F\u002F auto-emitted on response end\n})\n",[623,1967,1968,1986,1990,2021,2040,2044,2087,2125,2129,2147,2153],{"__ignoreMap":621},[626,1969,1970,1972,1974,1976,1978,1980,1982,1984],{"class":628,"line":629},[626,1971,863],{"class":862},[626,1973,680],{"class":636},[626,1975,868],{"class":632},[626,1977,738],{"class":636},[626,1979,873],{"class":862},[626,1981,730],{"class":636},[626,1983,878],{"class":650},[626,1985,881],{"class":636},[626,1987,1988],{"class":628,"line":659},[626,1989,887],{"emptyLinePlaceholder":886},[626,1991,1992,1995,1998,2001,2003,2006,2008,2012,2015,2018],{"class":628,"line":703},[626,1993,1994],{"class":862},"export",[626,1996,1997],{"class":862}," default",[626,1999,2000],{"class":640}," defineEventHandler",[626,2002,644],{"class":632},[626,2004,2005],{"class":892},"async",[626,2007,1562],{"class":636},[626,2009,2011],{"class":2010},"sHdIc","event",[626,2013,2014],{"class":636},")",[626,2016,2017],{"class":892}," =>",[626,2019,2020],{"class":636}," {\n",[626,2022,2023,2026,2029,2032,2034,2036,2038],{"class":628,"line":743},[626,2024,2025],{"class":892},"  const",[626,2027,2028],{"class":632}," log",[626,2030,2031],{"class":636}," =",[626,2033,868],{"class":640},[626,2035,644],{"class":683},[626,2037,2011],{"class":632},[626,2039,656],{"class":683},[626,2041,2042],{"class":628,"line":763},[626,2043,887],{"emptyLinePlaceholder":886},[626,2045,2046,2049,2051,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085],{"class":628,"line":783},[626,2047,2048],{"class":632},"  log",[626,2050,637],{"class":636},[626,2052,918],{"class":640},[626,2054,644],{"class":683},[626,2056,923],{"class":636},[626,2058,690],{"class":683},[626,2060,687],{"class":636},[626,2062,680],{"class":636},[626,2064,932],{"class":683},[626,2066,687],{"class":636},[626,2068,937],{"class":810},[626,2070,677],{"class":636},[626,2072,942],{"class":683},[626,2074,687],{"class":636},[626,2076,730],{"class":636},[626,2078,949],{"class":650},[626,2080,647],{"class":636},[626,2082,738],{"class":636},[626,2084,738],{"class":636},[626,2086,656],{"class":683},[626,2088,2089,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121,2123],{"class":628,"line":1012},[626,2090,2048],{"class":632},[626,2092,637],{"class":636},[626,2094,918],{"class":640},[626,2096,644],{"class":683},[626,2098,923],{"class":636},[626,2100,972],{"class":683},[626,2102,687],{"class":636},[626,2104,680],{"class":636},[626,2106,988],{"class":683},[626,2108,687],{"class":636},[626,2110,993],{"class":810},[626,2112,677],{"class":636},[626,2114,998],{"class":683},[626,2116,687],{"class":636},[626,2118,1003],{"class":810},[626,2120,738],{"class":636},[626,2122,738],{"class":636},[626,2124,656],{"class":683},[626,2126,2127],{"class":628,"line":1508},[626,2128,887],{"emptyLinePlaceholder":886},[626,2130,2131,2134,2136,2139,2141,2145],{"class":628,"line":1537},[626,2132,2133],{"class":862},"  return",[626,2135,680],{"class":636},[626,2137,2138],{"class":683}," success",[626,2140,687],{"class":636},[626,2142,2144],{"class":2143},"sfNiH"," true",[626,2146,1285],{"class":636},[626,2148,2149],{"class":628,"line":1542},[626,2150,2152],{"class":2151},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[626,2154,2155,2157],{"class":628,"line":1556},[626,2156,698],{"class":636},[626,2158,656],{"class":632},[544,2160,2161,2163,2164,2166],{"color":641,"icon":13},[623,2162,1954],{}," doesn't create a logger, it retrieves the one the framework middleware already attached to the event. The middleware handles creation and emission automatically. In Nuxt, ",[623,2165,1954],{}," is auto-imported.",[604,2168,2170],{"id":2169},"after-emit-sealing-and-background-work","After emit: sealing and background work",[540,2172,2173,2174,2177,2178,2180,2181,2184,2185,1720,2187,1720,2190,1724,2192,2195,2196,2199,2200,2206,2207,2210,2211,2214,2215,2218],{},"When the wide event is ",[824,2175,2176],{},"emitted"," (automatically at the end of the request, or when you call ",[623,2179,1947],{}," yourself), that logger instance is ",[824,2182,2183],{},"sealed",". Further ",[623,2186,918],{},[623,2188,2189],{},"error",[623,2191,641],{},[623,2193,2194],{},"warn"," calls do ",[824,2197,2198],{},"not"," update the event that was already sent to your drains. They are ignored and evlog prints a ",[824,2201,2202,2205],{},[623,2203,2204],{},"[evlog]"," warning"," to the console with the keys that were dropped. This also applies when ",[824,2208,2209],{},"head sampling"," discards the event (",[623,2212,2213],{},"emit()"," returned ",[623,2216,2217],{},"null","): the logger is still sealed for that unit of work.",[540,2220,2221,2222,2225,2226,2229,2230,2233,2234,2237],{},"This matters for ",[824,2223,2224],{},"async work that outlives the handler"," (fire-and-forget promises, ",[623,2227,2228],{},"setTimeout",", tasks started but not awaited). On many runtimes, ",[623,2231,2232],{},"AsyncLocalStorage"," keeps returning the same request logger, so ",[623,2235,2236],{},"useLogger()"," still succeeds even though the HTTP response — and the wide event — are already finished. Without warnings, that looks like silent data loss.",[1356,2239,2241],{"id":2240},"logforklabel-fn",[623,2242,2243],{},"log.fork(label, fn)",[540,2245,2246,2247,2250,2251,2255,2256,2259,2260,1720,2263,2265,2266,2269,2270,2272],{},"For intentional background work that should produce ",[824,2248,2249],{},"its own"," wide event, use ",[824,2252,2253],{},[623,2254,2243],{}," when your integration provides it (Express, Fastify, NestJS, SvelteKit, React Router, Next.js ",[623,2257,2258],{},"withEvlog",", Elysia). Inside ",[623,2261,2262],{},"fn",[623,2264,2236],{}," resolves to a ",[824,2267,2268],{},"child"," logger. When ",[623,2271,2262],{}," completes (or throws), the child emits an event with:",[566,2274,2275,2287],{},[569,2276,2277,2282,2283,2286],{},[824,2278,2279],{},[623,2280,2281],{},"operation",": the ",[623,2284,2285],{},"label"," you passed",[569,2288,2289,2294,2295,2297],{},[824,2290,2291],{},[623,2292,2293],{},"_parentRequestId",": the parent request’s ",[623,2296,1727],{}," (for correlation in queries and dashboards)",[540,2299,2300,2301,2304],{},"The parent wide event may be emitted ",[824,2302,2303],{},"before"," the child event; they are two separate events ordered by time.",[540,2306,2307,2310,2311,2313,2314,2317,2318,2320],{},[824,2308,2309],{},"Not available yet:"," Hono (no ",[623,2312,1954],{}," without ",[623,2315,2316],{},"c.get('log')"," + ALS) and Nitro\u002FNuxt ",[623,2319,1961],{}," — use the post-emit warnings to catch mistakes; a different API may arrive later for event-scoped forks.",[540,2322,2323,2324,2327],{},"For AI SDK streaming responses, supported framework integrations (Next.js, Nitro\u002FNuxt, SvelteKit, Hono, React Router, oRPC) defer wide-event emit until the response body finishes, so ",[623,2325,2326],{},"createAILogger(log)"," metadata lands on the same request event automatically.",[615,2329,2332],{"className":617,"code":2330,"filename":2331,"language":620,"meta":621,"style":621},"import { evlog, useLogger } from 'evlog\u002Fexpress'\n\n\u002F\u002F Inside a route after evlog middleware:\nconst log = req.log\nlog.set({ order_dispatched: true })\n\nlog.fork?.('process_order', async () => {\n  const child = useLogger()\n  child.set({ inventory_checked: true })\n})\n","server\u002Froutes\u002Fcheckout.post.ts",[623,2333,2334,2358,2362,2367,2383,2406,2410,2443,2456,2480],{"__ignoreMap":621},[626,2335,2336,2338,2340,2343,2345,2347,2349,2351,2353,2356],{"class":628,"line":629},[626,2337,863],{"class":862},[626,2339,680],{"class":636},[626,2341,2342],{"class":632}," evlog",[626,2344,677],{"class":636},[626,2346,868],{"class":632},[626,2348,738],{"class":636},[626,2350,873],{"class":862},[626,2352,730],{"class":636},[626,2354,2355],{"class":650},"evlog\u002Fexpress",[626,2357,881],{"class":636},[626,2359,2360],{"class":628,"line":659},[626,2361,887],{"emptyLinePlaceholder":886},[626,2363,2364],{"class":628,"line":703},[626,2365,2366],{"class":2151},"\u002F\u002F Inside a route after evlog middleware:\n",[626,2368,2369,2371,2373,2375,2378,2380],{"class":628,"line":743},[626,2370,893],{"class":892},[626,2372,896],{"class":632},[626,2374,899],{"class":636},[626,2376,2377],{"class":632}," req",[626,2379,637],{"class":636},[626,2381,2382],{"class":632},"log\n",[626,2384,2385,2387,2389,2391,2393,2395,2398,2400,2402,2404],{"class":628,"line":763},[626,2386,913],{"class":632},[626,2388,637],{"class":636},[626,2390,918],{"class":640},[626,2392,644],{"class":632},[626,2394,923],{"class":636},[626,2396,2397],{"class":683}," order_dispatched",[626,2399,687],{"class":636},[626,2401,2144],{"class":2143},[626,2403,738],{"class":636},[626,2405,656],{"class":632},[626,2407,2408],{"class":628,"line":783},[626,2409,887],{"emptyLinePlaceholder":886},[626,2411,2412,2414,2416,2419,2422,2424,2426,2429,2431,2433,2436,2439,2441],{"class":628,"line":1012},[626,2413,913],{"class":632},[626,2415,637],{"class":636},[626,2417,2418],{"class":640},"fork",[626,2420,2421],{"class":636},"?.",[626,2423,644],{"class":632},[626,2425,647],{"class":636},[626,2427,2428],{"class":650},"process_order",[626,2430,647],{"class":636},[626,2432,677],{"class":636},[626,2434,2435],{"class":892}," async",[626,2437,2438],{"class":636}," ()",[626,2440,2017],{"class":892},[626,2442,2020],{"class":636},[626,2444,2445,2447,2450,2452,2454],{"class":628,"line":1508},[626,2446,2025],{"class":892},[626,2448,2449],{"class":632}," child",[626,2451,2031],{"class":636},[626,2453,868],{"class":640},[626,2455,1232],{"class":683},[626,2457,2458,2461,2463,2465,2467,2469,2472,2474,2476,2478],{"class":628,"line":1537},[626,2459,2460],{"class":632},"  child",[626,2462,637],{"class":636},[626,2464,918],{"class":640},[626,2466,644],{"class":683},[626,2468,923],{"class":636},[626,2470,2471],{"class":683}," inventory_checked",[626,2473,687],{"class":636},[626,2475,2144],{"class":2143},[626,2477,738],{"class":636},[626,2479,656],{"class":683},[626,2481,2482,2484],{"class":628,"line":1542},[626,2483,698],{"class":636},[626,2485,656],{"class":632},[604,2487,2489],{"id":2488},"anatomy-of-a-wide-event","Anatomy of a Wide Event",[540,2491,2492,2493,2495,2496,1720,2498,2500,2501,637],{},"A well-designed wide event contains context from multiple layers. The examples below show what to add inside your handler or script. They assume ",[623,2494,913],{}," is already created via ",[623,2497,1361],{},[623,2499,1706],{},", or ",[623,2502,1954],{},[1356,2504,2506],{"id":2505},"operation-context","Operation Context",[540,2508,2509],{},"Basic information about the operation:",[850,2511,2512,2616],{},[615,2513,2515],{"className":617,"code":2514,"filename":855,"language":620,"meta":621,"style":621},"import { useLogger } from 'evlog'\n\nconst log = useLogger(event)\nlog.set({\n  method: 'POST',\n  path: '\u002Fapi\u002Fcheckout',\n  requestId: 'abc-123-def',\n})\n",[623,2516,2517,2535,2539,2551,2563,2579,2594,2610],{"__ignoreMap":621},[626,2518,2519,2521,2523,2525,2527,2529,2531,2533],{"class":628,"line":629},[626,2520,863],{"class":862},[626,2522,680],{"class":636},[626,2524,868],{"class":632},[626,2526,738],{"class":636},[626,2528,873],{"class":862},[626,2530,730],{"class":636},[626,2532,878],{"class":650},[626,2534,881],{"class":636},[626,2536,2537],{"class":628,"line":659},[626,2538,887],{"emptyLinePlaceholder":886},[626,2540,2541,2543,2545,2547,2549],{"class":628,"line":703},[626,2542,893],{"class":892},[626,2544,896],{"class":632},[626,2546,899],{"class":636},[626,2548,868],{"class":640},[626,2550,904],{"class":632},[626,2552,2553,2555,2557,2559,2561],{"class":628,"line":743},[626,2554,913],{"class":632},[626,2556,637],{"class":636},[626,2558,918],{"class":640},[626,2560,644],{"class":632},[626,2562,1576],{"class":636},[626,2564,2565,2568,2570,2572,2574,2576],{"class":628,"line":763},[626,2566,2567],{"class":683},"  method",[626,2569,687],{"class":636},[626,2571,730],{"class":636},[626,2573,1818],{"class":650},[626,2575,647],{"class":636},[626,2577,2578],{"class":636},",\n",[626,2580,2581,2584,2586,2588,2590,2592],{"class":628,"line":783},[626,2582,2583],{"class":683},"  path",[626,2585,687],{"class":636},[626,2587,730],{"class":636},[626,2589,1832],{"class":650},[626,2591,647],{"class":636},[626,2593,2578],{"class":636},[626,2595,2596,2599,2601,2603,2606,2608],{"class":628,"line":1012},[626,2597,2598],{"class":683},"  requestId",[626,2600,687],{"class":636},[626,2602,730],{"class":636},[626,2604,2605],{"class":650},"abc-123-def",[626,2607,647],{"class":636},[626,2609,2578],{"class":636},[626,2611,2612,2614],{"class":628,"line":1508},[626,2613,698],{"class":636},[626,2615,656],{"class":632},[615,2617,2619],{"className":617,"code":2618,"filename":1065,"language":620,"meta":621,"style":621},"import { createLogger } from 'evlog'\n\nconst log = createLogger({\n  jobId: 'sync-001',\n  queue: 'emails',\n  source: 'postgres',\n})\n",[623,2620,2621,2639,2643,2657,2672,2687,2702],{"__ignoreMap":621},[626,2622,2623,2625,2627,2629,2631,2633,2635,2637],{"class":628,"line":629},[626,2624,863],{"class":862},[626,2626,680],{"class":636},[626,2628,1076],{"class":632},[626,2630,738],{"class":636},[626,2632,873],{"class":862},[626,2634,730],{"class":636},[626,2636,878],{"class":650},[626,2638,881],{"class":636},[626,2640,2641],{"class":628,"line":659},[626,2642,887],{"emptyLinePlaceholder":886},[626,2644,2645,2647,2649,2651,2653,2655],{"class":628,"line":703},[626,2646,893],{"class":892},[626,2648,896],{"class":632},[626,2650,899],{"class":636},[626,2652,1076],{"class":640},[626,2654,644],{"class":632},[626,2656,1576],{"class":636},[626,2658,2659,2662,2664,2666,2668,2670],{"class":628,"line":743},[626,2660,2661],{"class":683},"  jobId",[626,2663,687],{"class":636},[626,2665,730],{"class":636},[626,2667,1114],{"class":650},[626,2669,647],{"class":636},[626,2671,2578],{"class":636},[626,2673,2674,2677,2679,2681,2683,2685],{"class":628,"line":763},[626,2675,2676],{"class":683},"  queue",[626,2678,687],{"class":636},[626,2680,730],{"class":636},[626,2682,1128],{"class":650},[626,2684,647],{"class":636},[626,2686,2578],{"class":636},[626,2688,2689,2692,2694,2696,2698,2700],{"class":628,"line":783},[626,2690,2691],{"class":683},"  source",[626,2693,687],{"class":636},[626,2695,730],{"class":636},[626,2697,733],{"class":650},[626,2699,647],{"class":636},[626,2701,2578],{"class":636},[626,2703,2704,2706],{"class":628,"line":1012},[626,2705,698],{"class":636},[626,2707,656],{"class":632},[544,2709,2710,2711,1720,2713,1720,2715,2717],{"color":641,"icon":13},"In framework integrations, request context (",[623,2712,1719],{},[623,2714,1723],{},[623,2716,1727],{},") is auto-populated by the middleware. You don't need to set these fields manually.",[1356,2719,2721],{"id":2720},"user-actor-context","User \u002F Actor Context",[540,2723,2724],{},"Who triggered the operation:",[615,2726,2728],{"className":617,"code":2727,"filename":855,"language":620,"meta":621,"style":621},"log.set({\n  userId: user.id,\n  email: user.email,\n  subscription: user.plan,\n  accountAge: daysSince(user.createdAt),\n})\n",[623,2729,2730,2742,2757,2772,2787,2807],{"__ignoreMap":621},[626,2731,2732,2734,2736,2738,2740],{"class":628,"line":629},[626,2733,913],{"class":632},[626,2735,637],{"class":636},[626,2737,918],{"class":640},[626,2739,644],{"class":632},[626,2741,1576],{"class":636},[626,2743,2744,2747,2749,2751,2753,2755],{"class":628,"line":659},[626,2745,2746],{"class":683},"  userId",[626,2748,687],{"class":636},[626,2750,690],{"class":632},[626,2752,637],{"class":636},[626,2754,1605],{"class":632},[626,2756,2578],{"class":636},[626,2758,2759,2762,2764,2766,2768,2770],{"class":628,"line":703},[626,2760,2761],{"class":683},"  email",[626,2763,687],{"class":636},[626,2765,690],{"class":632},[626,2767,637],{"class":636},[626,2769,1619],{"class":632},[626,2771,2578],{"class":636},[626,2773,2774,2777,2779,2781,2783,2785],{"class":628,"line":743},[626,2775,2776],{"class":683},"  subscription",[626,2778,687],{"class":636},[626,2780,690],{"class":632},[626,2782,637],{"class":636},[626,2784,1632],{"class":632},[626,2786,2578],{"class":636},[626,2788,2789,2792,2794,2797,2800,2802,2805],{"class":628,"line":763},[626,2790,2791],{"class":683},"  accountAge",[626,2793,687],{"class":636},[626,2795,2796],{"class":640}," daysSince",[626,2798,2799],{"class":632},"(user",[626,2801,637],{"class":636},[626,2803,2804],{"class":632},"createdAt)",[626,2806,2578],{"class":636},[626,2808,2809,2811],{"class":628,"line":783},[626,2810,698],{"class":636},[626,2812,656],{"class":632},[1356,2814,2816],{"id":2815},"business-context","Business Context",[540,2818,2819],{},"Domain-specific data relevant to the operation:",[615,2821,2823],{"className":617,"code":2822,"filename":855,"language":620,"meta":621,"style":621},"log.set({\n  cart: {\n    id: cart.id,\n    items: cart.items.length,\n    total: cart.total,\n    currency: 'USD',\n  },\n  shipping: {\n    method: 'express',\n    country: address.country,\n  },\n  coupon: appliedCoupon?.code,\n})\n",[623,2824,2825,2837,2846,2861,2882,2898,2914,2919,2928,2944,2961,2965,2981],{"__ignoreMap":621},[626,2826,2827,2829,2831,2833,2835],{"class":628,"line":629},[626,2828,913],{"class":632},[626,2830,637],{"class":636},[626,2832,918],{"class":640},[626,2834,644],{"class":632},[626,2836,1576],{"class":636},[626,2838,2839,2842,2844],{"class":628,"line":659},[626,2840,2841],{"class":683},"  cart",[626,2843,687],{"class":636},[626,2845,2020],{"class":636},[626,2847,2848,2851,2853,2855,2857,2859],{"class":628,"line":703},[626,2849,2850],{"class":683},"    id",[626,2852,687],{"class":636},[626,2854,972],{"class":632},[626,2856,637],{"class":636},[626,2858,1605],{"class":632},[626,2860,2578],{"class":636},[626,2862,2863,2866,2868,2870,2872,2875,2877,2880],{"class":628,"line":743},[626,2864,2865],{"class":683},"    items",[626,2867,687],{"class":636},[626,2869,972],{"class":632},[626,2871,637],{"class":636},[626,2873,2874],{"class":632},"items",[626,2876,637],{"class":636},[626,2878,2879],{"class":632},"length",[626,2881,2578],{"class":636},[626,2883,2884,2887,2889,2891,2893,2896],{"class":628,"line":763},[626,2885,2886],{"class":683},"    total",[626,2888,687],{"class":636},[626,2890,972],{"class":632},[626,2892,637],{"class":636},[626,2894,2895],{"class":632},"total",[626,2897,2578],{"class":636},[626,2899,2900,2903,2905,2907,2910,2912],{"class":628,"line":783},[626,2901,2902],{"class":683},"    currency",[626,2904,687],{"class":636},[626,2906,730],{"class":636},[626,2908,2909],{"class":650},"USD",[626,2911,647],{"class":636},[626,2913,2578],{"class":636},[626,2915,2916],{"class":628,"line":1012},[626,2917,2918],{"class":636},"  },\n",[626,2920,2921,2924,2926],{"class":628,"line":1508},[626,2922,2923],{"class":683},"  shipping",[626,2925,687],{"class":636},[626,2927,2020],{"class":636},[626,2929,2930,2933,2935,2937,2940,2942],{"class":628,"line":1537},[626,2931,2932],{"class":683},"    method",[626,2934,687],{"class":636},[626,2936,730],{"class":636},[626,2938,2939],{"class":650},"express",[626,2941,647],{"class":636},[626,2943,2578],{"class":636},[626,2945,2946,2949,2951,2954,2956,2959],{"class":628,"line":1542},[626,2947,2948],{"class":683},"    country",[626,2950,687],{"class":636},[626,2952,2953],{"class":632}," address",[626,2955,637],{"class":636},[626,2957,2958],{"class":632},"country",[626,2960,2578],{"class":636},[626,2962,2963],{"class":628,"line":1556},[626,2964,2918],{"class":636},[626,2966,2967,2970,2972,2975,2977,2979],{"class":628,"line":1579},[626,2968,2969],{"class":683},"  coupon",[626,2971,687],{"class":636},[626,2973,2974],{"class":632}," appliedCoupon",[626,2976,2421],{"class":636},[626,2978,623],{"class":632},[626,2980,2578],{"class":636},[626,2982,2983,2985],{"class":628,"line":1639},[626,2984,698],{"class":636},[626,2986,656],{"class":632},[1356,2988,2990],{"id":2989},"outcome","Outcome",[540,2992,2993],{},"The result of the operation:",[850,2995,2996,3069],{},[615,2997,3000],{"className":617,"code":2998,"filename":2999,"language":620,"meta":621,"style":621},"log.set({\n  status: 200,\n  duration: Date.now() - startTime,\n  success: true,\n})\n","Success",[623,3001,3002,3014,3026,3052,3063],{"__ignoreMap":621},[626,3003,3004,3006,3008,3010,3012],{"class":628,"line":629},[626,3005,913],{"class":632},[626,3007,637],{"class":636},[626,3009,918],{"class":640},[626,3011,644],{"class":632},[626,3013,1576],{"class":636},[626,3015,3016,3019,3021,3024],{"class":628,"line":659},[626,3017,3018],{"class":683},"  status",[626,3020,687],{"class":636},[626,3022,3023],{"class":810}," 200",[626,3025,2578],{"class":636},[626,3027,3028,3031,3033,3036,3038,3041,3044,3047,3050],{"class":628,"line":703},[626,3029,3030],{"class":683},"  duration",[626,3032,687],{"class":636},[626,3034,3035],{"class":632}," Date",[626,3037,637],{"class":636},[626,3039,3040],{"class":640},"now",[626,3042,3043],{"class":632},"() ",[626,3045,3046],{"class":636},"-",[626,3048,3049],{"class":632}," startTime",[626,3051,2578],{"class":636},[626,3053,3054,3057,3059,3061],{"class":628,"line":743},[626,3055,3056],{"class":683},"  success",[626,3058,687],{"class":636},[626,3060,2144],{"class":2143},[626,3062,2578],{"class":636},[626,3064,3065,3067],{"class":628,"line":763},[626,3066,698],{"class":636},[626,3068,656],{"class":632},[615,3070,3073],{"className":617,"code":3071,"filename":3072,"language":620,"meta":621,"style":621},"log.set({\n  status: 500,\n  error: {\n    message: err.message,\n    code: err.code,\n    type: err.constructor.name,\n  },\n})\n","Error",[623,3074,3075,3087,3098,3107,3124,3139,3160,3164],{"__ignoreMap":621},[626,3076,3077,3079,3081,3083,3085],{"class":628,"line":629},[626,3078,913],{"class":632},[626,3080,637],{"class":636},[626,3082,918],{"class":640},[626,3084,644],{"class":632},[626,3086,1576],{"class":636},[626,3088,3089,3091,3093,3096],{"class":628,"line":659},[626,3090,3018],{"class":683},[626,3092,687],{"class":636},[626,3094,3095],{"class":810}," 500",[626,3097,2578],{"class":636},[626,3099,3100,3103,3105],{"class":628,"line":703},[626,3101,3102],{"class":683},"  error",[626,3104,687],{"class":636},[626,3106,2020],{"class":636},[626,3108,3109,3112,3114,3117,3119,3122],{"class":628,"line":743},[626,3110,3111],{"class":683},"    message",[626,3113,687],{"class":636},[626,3115,3116],{"class":632}," err",[626,3118,637],{"class":636},[626,3120,3121],{"class":632},"message",[626,3123,2578],{"class":636},[626,3125,3126,3129,3131,3133,3135,3137],{"class":628,"line":763},[626,3127,3128],{"class":683},"    code",[626,3130,687],{"class":636},[626,3132,3116],{"class":632},[626,3134,637],{"class":636},[626,3136,623],{"class":632},[626,3138,2578],{"class":636},[626,3140,3141,3144,3146,3148,3150,3153,3155,3158],{"class":628,"line":783},[626,3142,3143],{"class":683},"    type",[626,3145,687],{"class":636},[626,3147,3116],{"class":632},[626,3149,637],{"class":636},[626,3151,3152],{"class":632},"constructor",[626,3154,637],{"class":636},[626,3156,3157],{"class":632},"name",[626,3159,2578],{"class":636},[626,3161,3162],{"class":628,"line":1012},[626,3163,2918],{"class":636},[626,3165,3166,3168],{"class":628,"line":1508},[626,3167,698],{"class":636},[626,3169,656],{"class":632},[604,3171,517],{"id":3172},"best-practices",[1356,3174,3176],{"id":3175},"use-meaningful-keys","Use Meaningful Keys",[615,3178,3181],{"className":617,"code":3179,"filename":3180,"language":620,"meta":621,"style":621},"\u002F\u002F Avoid generic keys\nlog.set({ data: { id: 123 } })\n\n\u002F\u002F Use specific, descriptive keys\nlog.set({ order: { id: 123, status: 'pending' } })\n","server\u002Fapi\u002Forders.post.ts",[623,3182,3183,3188,3220,3224,3229],{"__ignoreMap":621},[626,3184,3185],{"class":628,"line":629},[626,3186,3187],{"class":2151},"\u002F\u002F Avoid generic keys\n",[626,3189,3190,3192,3194,3196,3198,3200,3203,3205,3207,3209,3211,3214,3216,3218],{"class":628,"line":659},[626,3191,913],{"class":632},[626,3193,637],{"class":636},[626,3195,918],{"class":640},[626,3197,644],{"class":632},[626,3199,923],{"class":636},[626,3201,3202],{"class":683}," data",[626,3204,687],{"class":636},[626,3206,680],{"class":636},[626,3208,932],{"class":683},[626,3210,687],{"class":636},[626,3212,3213],{"class":810}," 123",[626,3215,738],{"class":636},[626,3217,738],{"class":636},[626,3219,656],{"class":632},[626,3221,3222],{"class":628,"line":703},[626,3223,887],{"emptyLinePlaceholder":886},[626,3225,3226],{"class":628,"line":743},[626,3227,3228],{"class":2151},"\u002F\u002F Use specific, descriptive keys\n",[626,3230,3231,3233,3235,3237,3239,3241,3244,3246,3248,3250,3252,3254,3256,3258,3260,3262,3265,3267,3269,3271],{"class":628,"line":763},[626,3232,913],{"class":632},[626,3234,637],{"class":636},[626,3236,918],{"class":640},[626,3238,644],{"class":632},[626,3240,923],{"class":636},[626,3242,3243],{"class":683}," order",[626,3245,687],{"class":636},[626,3247,680],{"class":636},[626,3249,932],{"class":683},[626,3251,687],{"class":636},[626,3253,3213],{"class":810},[626,3255,677],{"class":636},[626,3257,1046],{"class":683},[626,3259,687],{"class":636},[626,3261,730],{"class":636},[626,3263,3264],{"class":650},"pending",[626,3266,647],{"class":636},[626,3268,738],{"class":636},[626,3270,738],{"class":636},[626,3272,656],{"class":632},[1356,3274,3276],{"id":3275},"group-related-data","Group Related Data",[615,3278,3280],{"className":617,"code":3279,"filename":855,"language":620,"meta":621,"style":621},"\u002F\u002F Flat structure is hard to read\nlog.set({\n  userId: 1,\n  userEmail: 'a@b.com',\n  cartId: 2,\n  cartTotal: 100,\n})\n\n\u002F\u002F Grouped structure is clearer\nlog.set({\n  user: { id: 1, email: 'a@b.com' },\n  cart: { id: 2, total: 100 },\n})\n",[623,3281,3282,3287,3299,3309,3325,3337,3349,3355,3359,3364,3376,3406,3430],{"__ignoreMap":621},[626,3283,3284],{"class":628,"line":629},[626,3285,3286],{"class":2151},"\u002F\u002F Flat structure is hard to read\n",[626,3288,3289,3291,3293,3295,3297],{"class":628,"line":659},[626,3290,913],{"class":632},[626,3292,637],{"class":636},[626,3294,918],{"class":640},[626,3296,644],{"class":632},[626,3298,1576],{"class":636},[626,3300,3301,3303,3305,3307],{"class":628,"line":703},[626,3302,2746],{"class":683},[626,3304,687],{"class":636},[626,3306,937],{"class":810},[626,3308,2578],{"class":636},[626,3310,3311,3314,3316,3318,3321,3323],{"class":628,"line":743},[626,3312,3313],{"class":683},"  userEmail",[626,3315,687],{"class":636},[626,3317,730],{"class":636},[626,3319,3320],{"class":650},"a@b.com",[626,3322,647],{"class":636},[626,3324,2578],{"class":636},[626,3326,3327,3330,3332,3335],{"class":628,"line":763},[626,3328,3329],{"class":683},"  cartId",[626,3331,687],{"class":636},[626,3333,3334],{"class":810}," 2",[626,3336,2578],{"class":636},[626,3338,3339,3342,3344,3347],{"class":628,"line":783},[626,3340,3341],{"class":683},"  cartTotal",[626,3343,687],{"class":636},[626,3345,3346],{"class":810}," 100",[626,3348,2578],{"class":636},[626,3350,3351,3353],{"class":628,"line":1012},[626,3352,698],{"class":636},[626,3354,656],{"class":632},[626,3356,3357],{"class":628,"line":1508},[626,3358,887],{"emptyLinePlaceholder":886},[626,3360,3361],{"class":628,"line":1537},[626,3362,3363],{"class":2151},"\u002F\u002F Grouped structure is clearer\n",[626,3365,3366,3368,3370,3372,3374],{"class":628,"line":1542},[626,3367,913],{"class":632},[626,3369,637],{"class":636},[626,3371,918],{"class":640},[626,3373,644],{"class":632},[626,3375,1576],{"class":636},[626,3377,3378,3381,3383,3385,3387,3389,3391,3393,3395,3397,3399,3401,3403],{"class":628,"line":1556},[626,3379,3380],{"class":683},"  user",[626,3382,687],{"class":636},[626,3384,680],{"class":636},[626,3386,932],{"class":683},[626,3388,687],{"class":636},[626,3390,937],{"class":810},[626,3392,677],{"class":636},[626,3394,1610],{"class":683},[626,3396,687],{"class":636},[626,3398,730],{"class":636},[626,3400,3320],{"class":650},[626,3402,647],{"class":636},[626,3404,3405],{"class":636}," },\n",[626,3407,3408,3410,3412,3414,3416,3418,3420,3422,3424,3426,3428],{"class":628,"line":1579},[626,3409,2841],{"class":683},[626,3411,687],{"class":636},[626,3413,680],{"class":636},[626,3415,932],{"class":683},[626,3417,687],{"class":636},[626,3419,3334],{"class":810},[626,3421,677],{"class":636},[626,3423,998],{"class":683},[626,3425,687],{"class":636},[626,3427,3346],{"class":810},[626,3429,3405],{"class":636},[626,3431,3432,3434],{"class":628,"line":1639},[626,3433,698],{"class":636},[626,3435,656],{"class":632},[1356,3437,3439],{"id":3438},"add-context-incrementally","Add Context Incrementally",[540,3441,3442,3443,3446],{},"Call ",[623,3444,3445],{},"log.set()"," as you gather information:",[850,3448,3449,3756],{},[615,3450,3452],{"className":617,"code":3451,"filename":855,"language":620,"meta":621,"style":621},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  const user = await getUser(event)\n  log.set({ user: { id: user.id, plan: user.plan } })\n\n  const cart = await getCart(user.id)\n  log.set({ cart: { items: cart.items.length, total: cart.total } })\n\n  const payment = await processPayment(cart)\n  log.set({ payment: { method: payment.method, status: payment.status } })\n\n  return { success: true }\n})\n",[623,3453,3454,3472,3476,3498,3514,3518,3537,3583,3587,3611,3661,3665,3685,3732,3736,3750],{"__ignoreMap":621},[626,3455,3456,3458,3460,3462,3464,3466,3468,3470],{"class":628,"line":629},[626,3457,863],{"class":862},[626,3459,680],{"class":636},[626,3461,868],{"class":632},[626,3463,738],{"class":636},[626,3465,873],{"class":862},[626,3467,730],{"class":636},[626,3469,878],{"class":650},[626,3471,881],{"class":636},[626,3473,3474],{"class":628,"line":659},[626,3475,887],{"emptyLinePlaceholder":886},[626,3477,3478,3480,3482,3484,3486,3488,3490,3492,3494,3496],{"class":628,"line":703},[626,3479,1994],{"class":862},[626,3481,1997],{"class":862},[626,3483,2000],{"class":640},[626,3485,644],{"class":632},[626,3487,2005],{"class":892},[626,3489,1562],{"class":636},[626,3491,2011],{"class":2010},[626,3493,2014],{"class":636},[626,3495,2017],{"class":892},[626,3497,2020],{"class":636},[626,3499,3500,3502,3504,3506,3508,3510,3512],{"class":628,"line":743},[626,3501,2025],{"class":892},[626,3503,2028],{"class":632},[626,3505,2031],{"class":636},[626,3507,868],{"class":640},[626,3509,644],{"class":683},[626,3511,2011],{"class":632},[626,3513,656],{"class":683},[626,3515,3516],{"class":628,"line":763},[626,3517,887],{"emptyLinePlaceholder":886},[626,3519,3520,3522,3524,3526,3528,3531,3533,3535],{"class":628,"line":783},[626,3521,2025],{"class":892},[626,3523,690],{"class":632},[626,3525,2031],{"class":636},[626,3527,1486],{"class":862},[626,3529,3530],{"class":640}," getUser",[626,3532,644],{"class":683},[626,3534,2011],{"class":632},[626,3536,656],{"class":683},[626,3538,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581],{"class":628,"line":1012},[626,3540,2048],{"class":632},[626,3542,637],{"class":636},[626,3544,918],{"class":640},[626,3546,644],{"class":683},[626,3548,923],{"class":636},[626,3550,690],{"class":683},[626,3552,687],{"class":636},[626,3554,680],{"class":636},[626,3556,932],{"class":683},[626,3558,687],{"class":636},[626,3560,690],{"class":632},[626,3562,637],{"class":636},[626,3564,1605],{"class":632},[626,3566,677],{"class":636},[626,3568,942],{"class":683},[626,3570,687],{"class":636},[626,3572,690],{"class":632},[626,3574,637],{"class":636},[626,3576,1632],{"class":632},[626,3578,738],{"class":636},[626,3580,738],{"class":636},[626,3582,656],{"class":683},[626,3584,3585],{"class":628,"line":1508},[626,3586,887],{"emptyLinePlaceholder":886},[626,3588,3589,3591,3593,3595,3597,3600,3602,3605,3607,3609],{"class":628,"line":1537},[626,3590,2025],{"class":892},[626,3592,972],{"class":632},[626,3594,2031],{"class":636},[626,3596,1486],{"class":862},[626,3598,3599],{"class":640}," getCart",[626,3601,644],{"class":683},[626,3603,3604],{"class":632},"user",[626,3606,637],{"class":636},[626,3608,1605],{"class":632},[626,3610,656],{"class":683},[626,3612,3613,3615,3617,3619,3621,3623,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649,3651,3653,3655,3657,3659],{"class":628,"line":1542},[626,3614,2048],{"class":632},[626,3616,637],{"class":636},[626,3618,918],{"class":640},[626,3620,644],{"class":683},[626,3622,923],{"class":636},[626,3624,972],{"class":683},[626,3626,687],{"class":636},[626,3628,680],{"class":636},[626,3630,988],{"class":683},[626,3632,687],{"class":636},[626,3634,972],{"class":632},[626,3636,637],{"class":636},[626,3638,2874],{"class":632},[626,3640,637],{"class":636},[626,3642,2879],{"class":632},[626,3644,677],{"class":636},[626,3646,998],{"class":683},[626,3648,687],{"class":636},[626,3650,972],{"class":632},[626,3652,637],{"class":636},[626,3654,2895],{"class":632},[626,3656,738],{"class":636},[626,3658,738],{"class":636},[626,3660,656],{"class":683},[626,3662,3663],{"class":628,"line":1556},[626,3664,887],{"emptyLinePlaceholder":886},[626,3666,3667,3669,3671,3673,3675,3678,3680,3683],{"class":628,"line":1579},[626,3668,2025],{"class":892},[626,3670,1025],{"class":632},[626,3672,2031],{"class":636},[626,3674,1486],{"class":862},[626,3676,3677],{"class":640}," processPayment",[626,3679,644],{"class":683},[626,3681,3682],{"class":632},"cart",[626,3684,656],{"class":683},[626,3686,3687,3689,3691,3693,3695,3697,3699,3701,3703,3705,3707,3709,3711,3713,3715,3717,3719,3721,3723,3726,3728,3730],{"class":628,"line":1639},[626,3688,2048],{"class":632},[626,3690,637],{"class":636},[626,3692,918],{"class":640},[626,3694,644],{"class":683},[626,3696,923],{"class":636},[626,3698,1025],{"class":683},[626,3700,687],{"class":636},[626,3702,680],{"class":636},[626,3704,1032],{"class":683},[626,3706,687],{"class":636},[626,3708,1025],{"class":632},[626,3710,637],{"class":636},[626,3712,1719],{"class":632},[626,3714,677],{"class":636},[626,3716,1046],{"class":683},[626,3718,687],{"class":636},[626,3720,1025],{"class":632},[626,3722,637],{"class":636},[626,3724,3725],{"class":632},"status",[626,3727,738],{"class":636},[626,3729,738],{"class":636},[626,3731,656],{"class":683},[626,3733,3734],{"class":628,"line":1648},[626,3735,887],{"emptyLinePlaceholder":886},[626,3737,3738,3740,3742,3744,3746,3748],{"class":628,"line":1654},[626,3739,2133],{"class":862},[626,3741,680],{"class":636},[626,3743,2138],{"class":683},[626,3745,687],{"class":636},[626,3747,2144],{"class":2143},[626,3749,1285],{"class":636},[626,3751,3752,3754],{"class":628,"line":1659},[626,3753,698],{"class":636},[626,3755,656],{"class":632},[615,3757,3759],{"className":1235,"code":3758,"filename":1237,"language":1238,"meta":621,"style":621},"[INFO] POST \u002Fapi\u002Fcheckout (456ms)\n  user: { id: 1, plan: 'pro' }\n  cart: { items: 3, total: 9999 }\n  payment: { method: 'card', status: 'success' }\n  status: 200\n",[623,3760,3761,3776,3796,3812,3838],{"__ignoreMap":621},[626,3762,3763,3765,3767,3769,3771,3774],{"class":628,"line":629},[626,3764,1245],{"class":636},[626,3766,1248],{"class":632},[626,3768,1251],{"class":636},[626,3770,1254],{"class":632},[626,3772,3773],{"class":1257},"456ms",[626,3775,656],{"class":632},[626,3777,3778,3780,3782,3784,3786,3788,3790,3792,3794],{"class":628,"line":659},[626,3779,1265],{"class":1257},[626,3781,680],{"class":650},[626,3783,1270],{"class":650},[626,3785,1273],{"class":650},[626,3787,1276],{"class":650},[626,3789,730],{"class":636},[626,3791,949],{"class":650},[626,3793,647],{"class":636},[626,3795,1285],{"class":650},[626,3797,3798,3800,3802,3804,3806,3808,3810],{"class":628,"line":703},[626,3799,1290],{"class":1257},[626,3801,680],{"class":650},[626,3803,1300],{"class":650},[626,3805,1303],{"class":650},[626,3807,1306],{"class":650},[626,3809,1003],{"class":810},[626,3811,1285],{"class":650},[626,3813,3814,3816,3818,3820,3822,3824,3826,3828,3830,3832,3834,3836],{"class":628,"line":743},[626,3815,1315],{"class":1257},[626,3817,680],{"class":650},[626,3819,1320],{"class":650},[626,3821,730],{"class":636},[626,3823,1039],{"class":650},[626,3825,647],{"class":636},[626,3827,677],{"class":650},[626,3829,1331],{"class":650},[626,3831,730],{"class":636},[626,3833,1053],{"class":650},[626,3835,647],{"class":636},[626,3837,1285],{"class":650},[626,3839,3840,3842],{"class":628,"line":763},[626,3841,1344],{"class":1257},[626,3843,1347],{"class":810},[1356,3845,3847],{"id":3846},"handle-errors-gracefully","Handle Errors Gracefully",[540,3849,3850],{},"When errors occur, the wide event still emits with error context:",[850,3852,3853,4079],{},[615,3854,3856],{"className":617,"code":3855,"filename":855,"language":620,"meta":621,"style":621},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  try {\n    const result = await processPayment(cart)\n    return result\n  } catch (err) {\n    log.set({\n      error: {\n        message: err.message,\n        code: err.code,\n        type: err.constructor.name,\n      },\n    })\n    throw err\n  }\n})\n",[623,3857,3858,3876,3880,3902,3918,3922,3929,3949,3957,3975,3988,3997,4012,4027,4046,4051,4058,4066,4072],{"__ignoreMap":621},[626,3859,3860,3862,3864,3866,3868,3870,3872,3874],{"class":628,"line":629},[626,3861,863],{"class":862},[626,3863,680],{"class":636},[626,3865,868],{"class":632},[626,3867,738],{"class":636},[626,3869,873],{"class":862},[626,3871,730],{"class":636},[626,3873,878],{"class":650},[626,3875,881],{"class":636},[626,3877,3878],{"class":628,"line":659},[626,3879,887],{"emptyLinePlaceholder":886},[626,3881,3882,3884,3886,3888,3890,3892,3894,3896,3898,3900],{"class":628,"line":703},[626,3883,1994],{"class":862},[626,3885,1997],{"class":862},[626,3887,2000],{"class":640},[626,3889,644],{"class":632},[626,3891,2005],{"class":892},[626,3893,1562],{"class":636},[626,3895,2011],{"class":2010},[626,3897,2014],{"class":636},[626,3899,2017],{"class":892},[626,3901,2020],{"class":636},[626,3903,3904,3906,3908,3910,3912,3914,3916],{"class":628,"line":743},[626,3905,2025],{"class":892},[626,3907,2028],{"class":632},[626,3909,2031],{"class":636},[626,3911,868],{"class":640},[626,3913,644],{"class":683},[626,3915,2011],{"class":632},[626,3917,656],{"class":683},[626,3919,3920],{"class":628,"line":763},[626,3921,887],{"emptyLinePlaceholder":886},[626,3923,3924,3927],{"class":628,"line":783},[626,3925,3926],{"class":862},"  try",[626,3928,2020],{"class":636},[626,3930,3931,3934,3937,3939,3941,3943,3945,3947],{"class":628,"line":1012},[626,3932,3933],{"class":892},"    const",[626,3935,3936],{"class":632}," result",[626,3938,2031],{"class":636},[626,3940,1486],{"class":862},[626,3942,3677],{"class":640},[626,3944,644],{"class":683},[626,3946,3682],{"class":632},[626,3948,656],{"class":683},[626,3950,3951,3954],{"class":628,"line":1508},[626,3952,3953],{"class":862},"    return",[626,3955,3956],{"class":632}," result\n",[626,3958,3959,3962,3965,3967,3970,3973],{"class":628,"line":1537},[626,3960,3961],{"class":636},"  }",[626,3963,3964],{"class":862}," catch",[626,3966,1562],{"class":683},[626,3968,3969],{"class":632},"err",[626,3971,3972],{"class":683},") ",[626,3974,1576],{"class":636},[626,3976,3977,3980,3982,3984,3986],{"class":628,"line":1542},[626,3978,3979],{"class":632},"    log",[626,3981,637],{"class":636},[626,3983,918],{"class":640},[626,3985,644],{"class":683},[626,3987,1576],{"class":636},[626,3989,3990,3993,3995],{"class":628,"line":1556},[626,3991,3992],{"class":683},"      error",[626,3994,687],{"class":636},[626,3996,2020],{"class":636},[626,3998,3999,4002,4004,4006,4008,4010],{"class":628,"line":1579},[626,4000,4001],{"class":683},"        message",[626,4003,687],{"class":636},[626,4005,3116],{"class":632},[626,4007,637],{"class":636},[626,4009,3121],{"class":632},[626,4011,2578],{"class":636},[626,4013,4014,4017,4019,4021,4023,4025],{"class":628,"line":1639},[626,4015,4016],{"class":683},"        code",[626,4018,687],{"class":636},[626,4020,3116],{"class":632},[626,4022,637],{"class":636},[626,4024,623],{"class":632},[626,4026,2578],{"class":636},[626,4028,4029,4032,4034,4036,4038,4040,4042,4044],{"class":628,"line":1648},[626,4030,4031],{"class":683},"        type",[626,4033,687],{"class":636},[626,4035,3116],{"class":632},[626,4037,637],{"class":636},[626,4039,3152],{"class":632},[626,4041,637],{"class":636},[626,4043,3157],{"class":632},[626,4045,2578],{"class":636},[626,4047,4048],{"class":628,"line":1654},[626,4049,4050],{"class":636},"      },\n",[626,4052,4053,4056],{"class":628,"line":1659},[626,4054,4055],{"class":636},"    }",[626,4057,656],{"class":683},[626,4059,4060,4063],{"class":628,"line":1692},[626,4061,4062],{"class":862},"    throw",[626,4064,4065],{"class":632}," err\n",[626,4067,4069],{"class":628,"line":4068},18,[626,4070,4071],{"class":636},"  }\n",[626,4073,4075,4077],{"class":628,"line":4074},19,[626,4076,698],{"class":636},[626,4078,656],{"class":632},[615,4080,4082],{"className":1235,"code":4081,"filename":1237,"language":1238,"meta":621,"style":621},"ERROR [checkout] POST \u002Fapi\u002Fcheckout 402 in 123ms\n  ├─ error: Card declined\n  │     at server\u002Fapi\u002Fcheckout.post.ts:42\n  │   ❯ 42 ┃ throw createError({ code: 'CARD_DECLINED', ... })\n  │     Why: Issuer declined the charge\n  │     Fix: Ask the customer to use another card\n  │     stack (3 frames hidden in node_modules)\n  ├─ user: id=1 plan=pro\n  └─ cart: items=3 total=9999\n",[623,4083,4084,4092,4106,4117,4140,4159,4186,4210,4226],{"__ignoreMap":621},[626,4085,4086,4089],{"class":628,"line":629},[626,4087,4088],{"class":1257},"ERROR",[626,4090,4091],{"class":632}," [checkout] POST \u002Fapi\u002Fcheckout 402 in 123ms\n",[626,4093,4094,4097,4100,4103],{"class":628,"line":659},[626,4095,4096],{"class":1257},"  ├─",[626,4098,4099],{"class":650}," error:",[626,4101,4102],{"class":650}," Card",[626,4104,4105],{"class":650}," declined\n",[626,4107,4108,4111,4114],{"class":628,"line":703},[626,4109,4110],{"class":1257},"  │",[626,4112,4113],{"class":650},"     at",[626,4115,4116],{"class":650}," server\u002Fapi\u002Fcheckout.post.ts:42\n",[626,4118,4119,4121,4124,4126,4129,4132,4135,4137],{"class":628,"line":743},[626,4120,4110],{"class":1257},[626,4122,4123],{"class":650},"   ❯",[626,4125,983],{"class":810},[626,4127,4128],{"class":650}," ┃",[626,4130,4131],{"class":650}," throw",[626,4133,4134],{"class":650}," createError",[626,4136,644],{"class":636},[626,4138,4139],{"class":632},"{ code: 'CARD_DECLINED', ... })\n",[626,4141,4142,4144,4147,4150,4153,4156],{"class":628,"line":763},[626,4143,4110],{"class":1257},[626,4145,4146],{"class":650},"     Why:",[626,4148,4149],{"class":650}," Issuer",[626,4151,4152],{"class":650}," declined",[626,4154,4155],{"class":650}," the",[626,4157,4158],{"class":650}," charge\n",[626,4160,4161,4163,4166,4169,4171,4174,4177,4180,4183],{"class":628,"line":783},[626,4162,4110],{"class":1257},[626,4164,4165],{"class":650},"     Fix:",[626,4167,4168],{"class":650}," Ask",[626,4170,4155],{"class":650},[626,4172,4173],{"class":650}," customer",[626,4175,4176],{"class":650}," to",[626,4178,4179],{"class":650}," use",[626,4181,4182],{"class":650}," another",[626,4184,4185],{"class":650}," card\n",[626,4187,4188,4190,4193,4196,4199,4202,4205,4208],{"class":628,"line":1012},[626,4189,4110],{"class":1257},[626,4191,4192],{"class":650},"     stack",[626,4194,4195],{"class":632}," (3 ",[626,4197,4198],{"class":650},"frames",[626,4200,4201],{"class":650}," hidden",[626,4203,4204],{"class":650}," in",[626,4206,4207],{"class":650}," node_modules",[626,4209,656],{"class":636},[626,4211,4212,4214,4217,4220,4223],{"class":628,"line":1508},[626,4213,4096],{"class":1257},[626,4215,4216],{"class":650}," user:",[626,4218,4219],{"class":650}," id=",[626,4221,4222],{"class":810},"1",[626,4224,4225],{"class":650}," plan=pro\n",[626,4227,4228,4231,4234,4237,4240,4243],{"class":628,"line":1537},[626,4229,4230],{"class":1257},"  └─",[626,4232,4233],{"class":650}," cart:",[626,4235,4236],{"class":650}," items=",[626,4238,4239],{"class":810},"3",[626,4241,4242],{"class":650}," total=",[626,4244,4245],{"class":810},"9999\n",[1356,4247,4249],{"id":4248},"setting-the-level-manually","Setting the Level Manually",[540,4251,4252,4255,4256,4258,4259,4262,4263,4266,4267,4269,4270,4273],{},[623,4253,4254],{},"log.error(err)"," populates the ",[623,4257,2189],{}," field with ",[623,4260,4261],{},"{ name, message, stack }"," and promotes the wide event to ",[623,4264,4265],{},"level: 'error'",". When you want to control the ",[623,4268,2189],{}," field yourself — typed error codes, no stack, or richer custom shapes — use ",[623,4271,4272],{},"log.setLevel()"," to promote the level without touching the context:",[615,4275,4277],{"className":617,"code":4276,"language":620,"meta":621,"style":621},"log.setLevel('error')\nlog.set({\n  error: {\n    code: 'PAYMENT_DECLINED',\n    reason: 'insufficient_funds',\n  },\n})\n",[623,4278,4279,4298,4310,4318,4333,4349,4353],{"__ignoreMap":621},[626,4280,4281,4283,4285,4288,4290,4292,4294,4296],{"class":628,"line":629},[626,4282,913],{"class":632},[626,4284,637],{"class":636},[626,4286,4287],{"class":640},"setLevel",[626,4289,644],{"class":632},[626,4291,647],{"class":636},[626,4293,2189],{"class":650},[626,4295,647],{"class":636},[626,4297,656],{"class":632},[626,4299,4300,4302,4304,4306,4308],{"class":628,"line":659},[626,4301,913],{"class":632},[626,4303,637],{"class":636},[626,4305,918],{"class":640},[626,4307,644],{"class":632},[626,4309,1576],{"class":636},[626,4311,4312,4314,4316],{"class":628,"line":703},[626,4313,3102],{"class":683},[626,4315,687],{"class":636},[626,4317,2020],{"class":636},[626,4319,4320,4322,4324,4326,4329,4331],{"class":628,"line":743},[626,4321,3128],{"class":683},[626,4323,687],{"class":636},[626,4325,730],{"class":636},[626,4327,4328],{"class":650},"PAYMENT_DECLINED",[626,4330,647],{"class":636},[626,4332,2578],{"class":636},[626,4334,4335,4338,4340,4342,4345,4347],{"class":628,"line":763},[626,4336,4337],{"class":683},"    reason",[626,4339,687],{"class":636},[626,4341,730],{"class":636},[626,4343,4344],{"class":650},"insufficient_funds",[626,4346,647],{"class":636},[626,4348,2578],{"class":636},[626,4350,4351],{"class":628,"line":783},[626,4352,2918],{"class":636},[626,4354,4355,4357],{"class":628,"line":1012},[626,4356,698],{"class":636},[626,4358,656],{"class":632},[540,4360,4361,4364,4365,4368,4369,4372,4373,4376,4377,4379],{},[623,4362,4363],{},"setLevel()"," accepts ",[623,4366,4367],{},"'error' | 'warn' | 'info' | 'debug'"," and wins over the level computed from ",[623,4370,4371],{},".error()"," \u002F ",[623,4374,4375],{},".warn()",". Combine it with ",[623,4378,3445],{}," to keep the wide event tidy while still routing through error-level sampling and drains.",[604,4381,4383],{"id":4382},"output-formats","Output Formats",[540,4385,4386],{},"evlog automatically switches between formats based on environment: pretty in development, JSON in production. This is the default behavior, no configuration needed.",[850,4388,4389,4471],{},[615,4390,4393],{"className":1235,"code":4391,"filename":4392,"language":1238,"meta":621,"style":621},"[INFO] POST \u002Fapi\u002Fcheckout (234ms)\n  user: { id: 1, plan: 'pro' }\n  cart: { items: 3, total: 9999 }\n  payment: { method: 'card', status: 'success' }\n","Development (Pretty)",[623,4394,4395,4409,4429,4445],{"__ignoreMap":621},[626,4396,4397,4399,4401,4403,4405,4407],{"class":628,"line":629},[626,4398,1245],{"class":636},[626,4400,1248],{"class":632},[626,4402,1251],{"class":636},[626,4404,1254],{"class":632},[626,4406,1258],{"class":1257},[626,4408,656],{"class":632},[626,4410,4411,4413,4415,4417,4419,4421,4423,4425,4427],{"class":628,"line":659},[626,4412,1265],{"class":1257},[626,4414,680],{"class":650},[626,4416,1270],{"class":650},[626,4418,1273],{"class":650},[626,4420,1276],{"class":650},[626,4422,730],{"class":636},[626,4424,949],{"class":650},[626,4426,647],{"class":636},[626,4428,1285],{"class":650},[626,4430,4431,4433,4435,4437,4439,4441,4443],{"class":628,"line":703},[626,4432,1290],{"class":1257},[626,4434,680],{"class":650},[626,4436,1300],{"class":650},[626,4438,1303],{"class":650},[626,4440,1306],{"class":650},[626,4442,1003],{"class":810},[626,4444,1285],{"class":650},[626,4446,4447,4449,4451,4453,4455,4457,4459,4461,4463,4465,4467,4469],{"class":628,"line":743},[626,4448,1315],{"class":1257},[626,4450,680],{"class":650},[626,4452,1320],{"class":650},[626,4454,730],{"class":636},[626,4456,1039],{"class":650},[626,4458,647],{"class":636},[626,4460,677],{"class":650},[626,4462,1331],{"class":650},[626,4464,730],{"class":636},[626,4466,1053],{"class":650},[626,4468,647],{"class":636},[626,4470,1285],{"class":650},[615,4472,4477],{"className":4473,"code":4474,"filename":4475,"language":4476,"meta":621,"style":621},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"level\": \"info\",\n  \"method\": \"POST\",\n  \"path\": \"\u002Fapi\u002Fcheckout\",\n  \"duration\": 234,\n  \"user\": { \"id\": 1, \"plan\": \"pro\" },\n  \"cart\": { \"items\": 3, \"total\": 9999 },\n  \"payment\": { \"method\": \"card\", \"status\": \"success\" }\n}\n","Production (JSON)","json",[623,4478,4479,4483,4505,4523,4541,4556,4596,4632,4677],{"__ignoreMap":621},[626,4480,4481],{"class":628,"line":629},[626,4482,1576],{"class":636},[626,4484,4485,4488,4491,4494,4496,4499,4501,4503],{"class":628,"line":659},[626,4486,4487],{"class":636},"  \"",[626,4489,4490],{"class":892},"level",[626,4492,4493],{"class":636},"\"",[626,4495,687],{"class":636},[626,4497,4498],{"class":636}," \"",[626,4500,641],{"class":650},[626,4502,4493],{"class":636},[626,4504,2578],{"class":636},[626,4506,4507,4509,4511,4513,4515,4517,4519,4521],{"class":628,"line":703},[626,4508,4487],{"class":636},[626,4510,1719],{"class":892},[626,4512,4493],{"class":636},[626,4514,687],{"class":636},[626,4516,4498],{"class":636},[626,4518,1818],{"class":650},[626,4520,4493],{"class":636},[626,4522,2578],{"class":636},[626,4524,4525,4527,4529,4531,4533,4535,4537,4539],{"class":628,"line":743},[626,4526,4487],{"class":636},[626,4528,1723],{"class":892},[626,4530,4493],{"class":636},[626,4532,687],{"class":636},[626,4534,4498],{"class":636},[626,4536,1832],{"class":650},[626,4538,4493],{"class":636},[626,4540,2578],{"class":636},[626,4542,4543,4545,4548,4550,4552,4554],{"class":628,"line":763},[626,4544,4487],{"class":636},[626,4546,4547],{"class":892},"duration",[626,4549,4493],{"class":636},[626,4551,687],{"class":636},[626,4553,811],{"class":810},[626,4555,2578],{"class":636},[626,4557,4558,4560,4562,4564,4566,4568,4570,4572,4574,4576,4578,4580,4582,4584,4586,4588,4590,4592,4594],{"class":628,"line":783},[626,4559,4487],{"class":636},[626,4561,3604],{"class":892},[626,4563,4493],{"class":636},[626,4565,687],{"class":636},[626,4567,680],{"class":636},[626,4569,4498],{"class":636},[626,4571,1605],{"class":1257},[626,4573,4493],{"class":636},[626,4575,687],{"class":636},[626,4577,937],{"class":810},[626,4579,677],{"class":636},[626,4581,4498],{"class":636},[626,4583,1632],{"class":1257},[626,4585,4493],{"class":636},[626,4587,687],{"class":636},[626,4589,4498],{"class":636},[626,4591,949],{"class":650},[626,4593,4493],{"class":636},[626,4595,3405],{"class":636},[626,4597,4598,4600,4602,4604,4606,4608,4610,4612,4614,4616,4618,4620,4622,4624,4626,4628,4630],{"class":628,"line":1012},[626,4599,4487],{"class":636},[626,4601,3682],{"class":892},[626,4603,4493],{"class":636},[626,4605,687],{"class":636},[626,4607,680],{"class":636},[626,4609,4498],{"class":636},[626,4611,2874],{"class":1257},[626,4613,4493],{"class":636},[626,4615,687],{"class":636},[626,4617,993],{"class":810},[626,4619,677],{"class":636},[626,4621,4498],{"class":636},[626,4623,2895],{"class":1257},[626,4625,4493],{"class":636},[626,4627,687],{"class":636},[626,4629,1003],{"class":810},[626,4631,3405],{"class":636},[626,4633,4634,4636,4639,4641,4643,4645,4647,4649,4651,4653,4655,4657,4659,4661,4663,4665,4667,4669,4671,4673,4675],{"class":628,"line":1508},[626,4635,4487],{"class":636},[626,4637,4638],{"class":892},"payment",[626,4640,4493],{"class":636},[626,4642,687],{"class":636},[626,4644,680],{"class":636},[626,4646,4498],{"class":636},[626,4648,1719],{"class":1257},[626,4650,4493],{"class":636},[626,4652,687],{"class":636},[626,4654,4498],{"class":636},[626,4656,1039],{"class":650},[626,4658,4493],{"class":636},[626,4660,677],{"class":636},[626,4662,4498],{"class":636},[626,4664,3725],{"class":1257},[626,4666,4493],{"class":636},[626,4668,687],{"class":636},[626,4670,4498],{"class":636},[626,4672,1053],{"class":650},[626,4674,4493],{"class":636},[626,4676,1285],{"class":636},[626,4678,4679],{"class":628,"line":1537},[626,4680,1651],{"class":636},[604,4682,4684],{"id":4683},"next-steps","Next Steps",[566,4686,4687,4692,4697,4702],{},[569,4688,4689,4691],{},[550,4690,41],{"href":42}," - Fire-and-forget logs when you don't need context accumulation",[569,4693,4694,4696],{},[550,4695,71],{"href":72}," - Add compile-time type safety to your wide events",[569,4698,4699,4701],{},[550,4700,51],{"href":52}," - Errors with actionable context",[569,4703,4704,4706],{},[550,4705,221],{"href":226}," - Auto-managed request logging per framework",[4708,4709,4710],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":621,"searchDepth":659,"depth":659,"links":4712},[4713,4714,4722,4725,4731,4738,4739],{"id":606,"depth":659,"text":607},{"id":1353,"depth":659,"text":1354,"children":4715},[4716,4718,4720],{"id":1358,"depth":703,"text":4717},"createLogger (General Purpose)",{"id":1703,"depth":703,"text":4719},"createRequestLogger (HTTP Contexts)",{"id":1951,"depth":703,"text":4721},"useLogger (Retrieving the Request Logger)",{"id":2169,"depth":659,"text":2170,"children":4723},[4724],{"id":2240,"depth":703,"text":2243},{"id":2488,"depth":659,"text":2489,"children":4726},[4727,4728,4729,4730],{"id":2505,"depth":703,"text":2506},{"id":2720,"depth":703,"text":2721},{"id":2815,"depth":703,"text":2816},{"id":2989,"depth":703,"text":2990},{"id":3172,"depth":659,"text":517,"children":4732},[4733,4734,4735,4736,4737],{"id":3175,"depth":703,"text":3176},{"id":3275,"depth":703,"text":3276},{"id":3438,"depth":703,"text":3439},{"id":3846,"depth":703,"text":3847},{"id":4248,"depth":703,"text":4249},{"id":4382,"depth":659,"text":4383},{"id":4683,"depth":659,"text":4684},"Accumulate context over any unit of work and emit a single comprehensive event. Works for HTTP requests, scripts, background jobs, queue workers, and workflows.","md",[4743,4745],{"label":51,"icon":54,"to":52,"color":546,"variant":4744},"subtle",{"label":517,"icon":379,"to":518,"color":546,"variant":4744},{},{"icon":49},{"title":46,"description":4740},"NsWfPyddsoFoW_r1wjhyRE-aO6-oDFfsoikLXAGY4Fc",[4751,4753],{"title":41,"path":42,"stem":43,"description":4752,"icon":44,"children":-1},"evlog's general-purpose logger. A drop-in for console.log, pino, or consola, with the same level filtering, drain pipeline, redaction, and pretty\u002FJSON output as wide events.",{"title":51,"path":52,"stem":53,"description":4754,"icon":54,"children":-1},"Create errors that explain why they occurred and how to fix them. Add actionable context with why, fix, and link fields for humans and AI agents.",1786743654988]