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