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