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