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