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