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