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