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