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