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