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