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