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