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