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