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