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