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