[{"data":1,"prerenderedAt":6436},["ShallowReactive",2],{"navigation_docs":3,"-learn-wide-events":607,"-learn-wide-events-surround":6431},[4,35,85,143,323,484,543,582],{"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,138],{"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},"logs","\u002Fcli\u002Flogs","3.cli\u002F10.logs","i-lucide-scroll-text",{"title":104,"path":105,"stem":106,"icon":107},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":109,"path":110,"stem":111,"icon":112},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":114,"path":115,"stem":116,"icon":117},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":119,"path":120,"stem":121,"icon":122},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":124,"path":125,"stem":126,"icon":127},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":129,"path":130,"stem":131,"icon":132},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":134,"path":135,"stem":136,"icon":137},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":139,"path":140,"stem":141,"icon":142},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":144,"path":145,"stem":146,"children":147,"page":34},"Integrate","\u002Fintegrate","4.integrate",[148,152,235],{"title":41,"path":149,"stem":150,"icon":151},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":153,"path":154,"stem":155,"children":156,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[157,160,190,215],{"title":41,"path":158,"stem":159,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":161,"path":162,"stem":163,"children":164,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[165,170,175,180,185],{"title":166,"path":167,"stem":168,"icon":169},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":171,"path":172,"stem":173,"icon":174},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":176,"path":177,"stem":178,"icon":179},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":181,"path":182,"stem":183,"icon":184},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":186,"path":187,"stem":188,"icon":189},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":191,"path":192,"stem":193,"children":194,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[195,200,205,210],{"title":196,"path":197,"stem":198,"icon":199},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":201,"path":202,"stem":203,"icon":204},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":206,"path":207,"stem":208,"icon":209},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":211,"path":212,"stem":213,"icon":214},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":216,"path":217,"stem":218,"children":219,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[220,225,230],{"title":221,"path":222,"stem":223,"icon":224},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":226,"path":227,"stem":228,"icon":229},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":231,"path":232,"stem":233,"icon":234},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":236,"path":237,"stem":238,"children":239,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[240,244,249,254,259,264,269,274,279,284,289,294,299,304,308,313,318],{"title":41,"path":241,"stem":242,"icon":243},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":245,"path":246,"stem":247,"icon":248},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":250,"path":251,"stem":252,"icon":253},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":255,"path":256,"stem":257,"icon":258},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":260,"path":261,"stem":262,"icon":263},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":265,"path":266,"stem":267,"icon":268},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":270,"path":271,"stem":272,"icon":273},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":275,"path":276,"stem":277,"icon":278},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":280,"path":281,"stem":282,"icon":283},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":285,"path":286,"stem":287,"icon":288},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":290,"path":291,"stem":292,"icon":293},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":295,"path":296,"stem":297,"icon":298},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":300,"path":301,"stem":302,"icon":303},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":305,"path":306,"stem":307,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":309,"path":310,"stem":311,"icon":312},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":314,"path":315,"stem":316,"icon":317},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":319,"path":320,"stem":321,"icon":322},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":324,"path":325,"stem":326,"children":327,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[328,331,336,364,391,423,444,449,454,458],{"title":41,"path":329,"stem":330,"icon":112},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":332,"path":333,"stem":334,"icon":335},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":337,"icon":338,"path":339,"stem":340,"children":341,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[342,345,350,355,360],{"title":41,"path":343,"stem":344,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":346,"path":347,"stem":348,"icon":349},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":351,"path":352,"stem":353,"icon":354},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":356,"path":357,"stem":358,"icon":359},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":361,"path":362,"stem":363,"icon":142},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":365,"icon":366,"path":367,"stem":368,"children":369,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[370,373,378,383,387],{"title":41,"path":371,"stem":372,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":374,"path":375,"stem":376,"icon":377},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":379,"path":380,"stem":381,"icon":382},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":384,"path":385,"stem":386,"icon":335},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":388,"path":389,"stem":390,"icon":117},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":392,"icon":393,"path":394,"stem":395,"children":396,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[397,400,405,410,415,419],{"title":41,"path":398,"stem":399,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":401,"path":402,"stem":403,"icon":404},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":406,"path":407,"stem":408,"icon":409},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":411,"path":412,"stem":413,"icon":414},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":416,"path":417,"stem":418,"icon":393},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":420,"path":421,"stem":422,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":361,"icon":117,"path":424,"stem":425,"children":426,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[427,430,435,440],{"title":41,"path":428,"stem":429,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":431,"path":432,"stem":433,"icon":434},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":436,"path":437,"stem":438,"icon":439},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":441,"path":442,"stem":443,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":445,"path":446,"stem":447,"icon":448},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":450,"path":451,"stem":452,"icon":453},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":455,"path":456,"stem":457,"icon":439},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":459,"icon":460,"path":461,"stem":462,"children":463,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[464,467,472,477,480],{"title":41,"path":465,"stem":466,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":468,"path":469,"stem":470,"icon":471},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":473,"path":474,"stem":475,"icon":476},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":441,"path":478,"stem":479,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":420,"path":481,"stem":482,"icon":483},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":485,"path":486,"stem":487,"children":488,"page":34},"Extend","\u002Fextend","6.extend",[489,493,498,503,507,512,516,520,524,528,533,538],{"title":41,"path":490,"stem":491,"icon":492},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":494,"path":495,"stem":496,"icon":497},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":499,"path":500,"stem":501,"icon":502},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":504,"path":505,"stem":506,"icon":497},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":508,"path":509,"stem":510,"icon":511},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":420,"path":513,"stem":514,"icon":515},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":517,"path":518,"stem":519,"icon":492},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":521,"path":522,"stem":523,"icon":448},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":525,"path":526,"stem":527,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":529,"path":530,"stem":531,"icon":532},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":534,"path":535,"stem":536,"icon":537},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":539,"path":540,"stem":541,"icon":542},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":441,"path":544,"stem":545,"children":546,"page":34},"\u002Freference","7.reference",[547,551,556,559,564,568,573,577],{"title":41,"path":548,"stem":549,"icon":550},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":552,"path":553,"stem":554,"icon":555},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":388,"path":557,"stem":558,"icon":117},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":560,"path":561,"stem":562,"icon":563},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":565,"path":566,"stem":567,"icon":393},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":569,"path":570,"stem":571,"icon":572},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":574,"path":575,"stem":576,"icon":448},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":578,"path":579,"stem":580,"icon":581},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":583,"path":584,"stem":585,"children":586,"page":34},"Compare","\u002Fcompare","8.compare",[587,591,595,599,603],{"title":588,"path":589,"stem":590,"icon":572},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":592,"path":593,"stem":594,"icon":209},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":596,"path":597,"stem":598,"icon":572},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":600,"path":601,"stem":602,"icon":572},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":604,"path":605,"stem":606,"icon":572},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":608,"title":51,"body":609,"description":6421,"extension":6422,"links":6423,"meta":6427,"navigation":6428,"path":52,"seo":6429,"stem":53,"__hash__":6430},"docs\u002F2.learn\u002F2.wide-events.md",{"type":610,"value":611,"toc":6392},"minimark",[612,616,630,676,681,684,687,889,892,919,922,1421,1424,1428,1436,1443,1774,1781,1801,2010,2022,2029,2036,2996,3004,3008,3056,3075,3081,3106,3131,3138,3154,3161,3315,3319,3332,3336,3339,3537,3547,3551,3554,3643,3647,3650,3817,3821,3824,4000,4003,4007,4103,4107,4266,4270,4277,4674,4678,4681,5761,5928,5932,5956,6041,6062,6066,6069,6362,6366,6388],[613,614,615],"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.",[617,618,621,622,626,627,629],"callout",{"color":619,"icon":620},"neutral","i-lucide-globe","Not running an HTTP framework? See ",[623,624,625],"a",{"href":306},"Standalone TypeScript"," and ",[623,628,300],{"href":301},", because wide events apply just as cleanly outside of request lifecycles.",[631,632,635,638,663],"prompt",{":actions":633,"description":634,"icon":54},"[\"copy\",\"cursor\",\"claude\"]","Convert my request handlers to wide events",[613,636,637],{},"Convert my existing request handlers from scattered logs to evlog wide events.",[639,640,641,645,648,651,654,657,660],"ul",{},[642,643,644],"li",{},"Find handlers that call console.log\u002Flogger.info multiple times per request",[642,646,647],{},"Replace those with a single useLogger(event) (or framework equivalent) at the top",[642,649,650],{},"Use log.set({ user, cart, payment, ... }) to accumulate context as the request progresses",[642,652,653],{},"Group related fields into nested objects (user, cart, payment) instead of flat keys",[642,655,656],{},"Remove redundant info-level logs once the wide event captures the same information",[642,658,659],{},"Keep error logs that capture distinct failure cases via log.error()",[642,661,662],{},"Trust the framework integration to auto-emit one wide event per request",[613,664,665,666,671,672],{},"Docs: ",[623,667,668],{"href":668,"rel":669},"https:\u002F\u002Fwww.evlog.dev\u002Flearn\u002Fwide-events",[670],"nofollow","\nBest practices: ",[623,673,674],{"href":674,"rel":675},"https:\u002F\u002Fwww.evlog.dev\u002Freference\u002Fbest-practices",[670],[677,678,680],"h2",{"id":679},"why-wide-events","Why Wide Events?",[682,683],"wide-event-collapse",{},[613,685,686],{},"Traditional logging creates noise:",[688,689,695],"pre",{"className":690,"code":691,"filename":692,"language":693,"meta":694,"style":694},"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","",[696,697,698,730,774,814,834,854],"code",{"__ignoreMap":694},[699,700,703,707,711,715,718,721,725,727],"span",{"class":701,"line":702},"line",1,[699,704,706],{"class":705},"sTEyZ","logger",[699,708,710],{"class":709},"sMK4o",".",[699,712,714],{"class":713},"s2Zo4","info",[699,716,717],{"class":705},"(",[699,719,720],{"class":709},"'",[699,722,724],{"class":723},"sfazB","Job started",[699,726,720],{"class":709},[699,728,729],{"class":705},")\n",[699,731,733,735,737,739,741,743,746,748,751,754,758,761,764,766,769,772],{"class":701,"line":732},2,[699,734,706],{"class":705},[699,736,710],{"class":709},[699,738,714],{"class":713},[699,740,717],{"class":705},[699,742,720],{"class":709},[699,744,745],{"class":723},"User authenticated",[699,747,720],{"class":709},[699,749,750],{"class":709},",",[699,752,753],{"class":709}," {",[699,755,757],{"class":756},"swJcz"," userId",[699,759,760],{"class":709},":",[699,762,763],{"class":705}," user",[699,765,710],{"class":709},[699,767,768],{"class":705},"id ",[699,770,771],{"class":709},"}",[699,773,729],{"class":705},[699,775,777,779,781,783,785,787,790,792,794,796,799,801,804,807,809,812],{"class":701,"line":776},3,[699,778,706],{"class":705},[699,780,710],{"class":709},[699,782,714],{"class":713},[699,784,717],{"class":705},[699,786,720],{"class":709},[699,788,789],{"class":723},"Fetching data",[699,791,720],{"class":709},[699,793,750],{"class":709},[699,795,753],{"class":709},[699,797,798],{"class":756}," source",[699,800,760],{"class":709},[699,802,803],{"class":709}," '",[699,805,806],{"class":723},"postgres",[699,808,720],{"class":709},[699,810,811],{"class":709}," }",[699,813,729],{"class":705},[699,815,817,819,821,823,825,827,830,832],{"class":701,"line":816},4,[699,818,706],{"class":705},[699,820,710],{"class":709},[699,822,714],{"class":713},[699,824,717],{"class":705},[699,826,720],{"class":709},[699,828,829],{"class":723},"Processing records",[699,831,720],{"class":709},[699,833,729],{"class":705},[699,835,837,839,841,843,845,847,850,852],{"class":701,"line":836},5,[699,838,706],{"class":705},[699,840,710],{"class":709},[699,842,714],{"class":713},[699,844,717],{"class":705},[699,846,720],{"class":709},[699,848,849],{"class":723},"Processing complete",[699,851,720],{"class":709},[699,853,729],{"class":705},[699,855,857,859,861,863,865,867,870,872,874,876,879,881,885,887],{"class":701,"line":856},6,[699,858,706],{"class":705},[699,860,710],{"class":709},[699,862,714],{"class":713},[699,864,717],{"class":705},[699,866,720],{"class":709},[699,868,869],{"class":723},"Job finished",[699,871,720],{"class":709},[699,873,750],{"class":709},[699,875,753],{"class":709},[699,877,878],{"class":756}," duration",[699,880,760],{"class":709},[699,882,884],{"class":883},"sbssI"," 234",[699,886,811],{"class":709},[699,888,729],{"class":705},[613,890,891],{},"This approach has problems:",[639,893,894,901,907,913],{},[642,895,896,900],{},[897,898,899],"strong",{},"Scattered context",": Information is spread across multiple log lines",[642,902,903,906],{},[897,904,905],{},"Hard to correlate",": Matching logs to operations requires IDs everywhere",[642,908,909,912],{},[897,910,911],{},"Noise",": 10+ log lines per operation makes finding issues harder",[642,914,915,918],{},[897,916,917],{},"Incomplete",": Some logs might be missing if errors occur",[613,920,921],{},"Wide events solve this:",[923,924,925,1135,1306],"code-group",{},[688,926,929],{"className":690,"code":927,"filename":928,"language":693,"meta":694,"style":694},"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",[696,930,931,955,961,978,982,1031,1083],{"__ignoreMap":694},[699,932,933,937,939,942,944,947,949,952],{"class":701,"line":702},[699,934,936],{"class":935},"s7zQu","import",[699,938,753],{"class":709},[699,940,941],{"class":705}," useLogger",[699,943,811],{"class":709},[699,945,946],{"class":935}," from",[699,948,803],{"class":709},[699,950,951],{"class":723},"evlog",[699,953,954],{"class":709},"'\n",[699,956,957],{"class":701,"line":732},[699,958,960],{"emptyLinePlaceholder":959},true,"\n",[699,962,963,967,970,973,975],{"class":701,"line":776},[699,964,966],{"class":965},"spNyl","const",[699,968,969],{"class":705}," log ",[699,971,972],{"class":709},"=",[699,974,941],{"class":713},[699,976,977],{"class":705},"(event)\n",[699,979,980],{"class":701,"line":816},[699,981,960],{"emptyLinePlaceholder":959},[699,983,984,987,989,992,994,997,999,1001,1003,1006,1008,1011,1013,1016,1018,1020,1023,1025,1027,1029],{"class":701,"line":836},[699,985,986],{"class":705},"log",[699,988,710],{"class":709},[699,990,991],{"class":713},"set",[699,993,717],{"class":705},[699,995,996],{"class":709},"{",[699,998,763],{"class":756},[699,1000,760],{"class":709},[699,1002,753],{"class":709},[699,1004,1005],{"class":756}," id",[699,1007,760],{"class":709},[699,1009,1010],{"class":883}," 1",[699,1012,750],{"class":709},[699,1014,1015],{"class":756}," plan",[699,1017,760],{"class":709},[699,1019,803],{"class":709},[699,1021,1022],{"class":723},"pro",[699,1024,720],{"class":709},[699,1026,811],{"class":709},[699,1028,811],{"class":709},[699,1030,729],{"class":705},[699,1032,1033,1035,1037,1039,1041,1043,1046,1048,1050,1052,1054,1057,1059,1062,1064,1067,1069,1072,1074,1077,1079,1081],{"class":701,"line":856},[699,1034,986],{"class":705},[699,1036,710],{"class":709},[699,1038,991],{"class":713},[699,1040,717],{"class":705},[699,1042,996],{"class":709},[699,1044,1045],{"class":756}," cart",[699,1047,760],{"class":709},[699,1049,753],{"class":709},[699,1051,1005],{"class":756},[699,1053,760],{"class":709},[699,1055,1056],{"class":883}," 42",[699,1058,750],{"class":709},[699,1060,1061],{"class":756}," items",[699,1063,760],{"class":709},[699,1065,1066],{"class":883}," 3",[699,1068,750],{"class":709},[699,1070,1071],{"class":756}," total",[699,1073,760],{"class":709},[699,1075,1076],{"class":883}," 9999",[699,1078,811],{"class":709},[699,1080,811],{"class":709},[699,1082,729],{"class":705},[699,1084,1086,1088,1090,1092,1094,1096,1099,1101,1103,1106,1108,1110,1113,1115,1117,1120,1122,1124,1127,1129,1131,1133],{"class":701,"line":1085},7,[699,1087,986],{"class":705},[699,1089,710],{"class":709},[699,1091,991],{"class":713},[699,1093,717],{"class":705},[699,1095,996],{"class":709},[699,1097,1098],{"class":756}," payment",[699,1100,760],{"class":709},[699,1102,753],{"class":709},[699,1104,1105],{"class":756}," method",[699,1107,760],{"class":709},[699,1109,803],{"class":709},[699,1111,1112],{"class":723},"card",[699,1114,720],{"class":709},[699,1116,750],{"class":709},[699,1118,1119],{"class":756}," status",[699,1121,760],{"class":709},[699,1123,803],{"class":709},[699,1125,1126],{"class":723},"success",[699,1128,720],{"class":709},[699,1130,811],{"class":709},[699,1132,811],{"class":709},[699,1134,729],{"class":705},[688,1136,1139],{"className":690,"code":1137,"filename":1138,"language":693,"meta":694,"style":694},"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",[696,1140,1141,1160,1164,1208,1212,1252,1294],{"__ignoreMap":694},[699,1142,1143,1145,1147,1150,1152,1154,1156,1158],{"class":701,"line":702},[699,1144,936],{"class":935},[699,1146,753],{"class":709},[699,1148,1149],{"class":705}," createLogger",[699,1151,811],{"class":709},[699,1153,946],{"class":935},[699,1155,803],{"class":709},[699,1157,951],{"class":723},[699,1159,954],{"class":709},[699,1161,1162],{"class":701,"line":732},[699,1163,960],{"emptyLinePlaceholder":959},[699,1165,1166,1168,1170,1172,1174,1176,1178,1181,1183,1185,1188,1190,1192,1195,1197,1199,1202,1204,1206],{"class":701,"line":776},[699,1167,966],{"class":965},[699,1169,969],{"class":705},[699,1171,972],{"class":709},[699,1173,1149],{"class":713},[699,1175,717],{"class":705},[699,1177,996],{"class":709},[699,1179,1180],{"class":756}," jobId",[699,1182,760],{"class":709},[699,1184,803],{"class":709},[699,1186,1187],{"class":723},"sync-001",[699,1189,720],{"class":709},[699,1191,750],{"class":709},[699,1193,1194],{"class":756}," queue",[699,1196,760],{"class":709},[699,1198,803],{"class":709},[699,1200,1201],{"class":723},"emails",[699,1203,720],{"class":709},[699,1205,811],{"class":709},[699,1207,729],{"class":705},[699,1209,1210],{"class":701,"line":816},[699,1211,960],{"emptyLinePlaceholder":959},[699,1213,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232,1234,1236,1239,1241,1243,1246,1248,1250],{"class":701,"line":836},[699,1215,986],{"class":705},[699,1217,710],{"class":709},[699,1219,991],{"class":713},[699,1221,717],{"class":705},[699,1223,996],{"class":709},[699,1225,798],{"class":756},[699,1227,760],{"class":709},[699,1229,803],{"class":709},[699,1231,806],{"class":723},[699,1233,720],{"class":709},[699,1235,750],{"class":709},[699,1237,1238],{"class":756}," target",[699,1240,760],{"class":709},[699,1242,803],{"class":709},[699,1244,1245],{"class":723},"s3",[699,1247,720],{"class":709},[699,1249,811],{"class":709},[699,1251,729],{"class":705},[699,1253,1254,1256,1258,1260,1262,1264,1267,1269,1271,1274,1276,1279,1281,1284,1286,1288,1290,1292],{"class":701,"line":856},[699,1255,986],{"class":705},[699,1257,710],{"class":709},[699,1259,991],{"class":713},[699,1261,717],{"class":705},[699,1263,996],{"class":709},[699,1265,1266],{"class":756}," records",[699,1268,760],{"class":709},[699,1270,753],{"class":709},[699,1272,1273],{"class":756}," found",[699,1275,760],{"class":709},[699,1277,1278],{"class":883}," 1250",[699,1280,750],{"class":709},[699,1282,1283],{"class":756}," synced",[699,1285,760],{"class":709},[699,1287,1278],{"class":883},[699,1289,811],{"class":709},[699,1291,811],{"class":709},[699,1293,729],{"class":705},[699,1295,1296,1298,1300,1303],{"class":701,"line":1085},[699,1297,986],{"class":705},[699,1299,710],{"class":709},[699,1301,1302],{"class":713},"emit",[699,1304,1305],{"class":705},"()\n",[688,1307,1312],{"className":1308,"code":1309,"filename":1310,"language":1311,"meta":694,"style":694},"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",[696,1313,1314,1334,1359,1384,1413],{"__ignoreMap":694},[699,1315,1316,1319,1322,1325,1328,1332],{"class":701,"line":702},[699,1317,1318],{"class":709},"[",[699,1320,1321],{"class":705},"INFO",[699,1323,1324],{"class":709},"]",[699,1326,1327],{"class":705}," POST \u002Fapi\u002Fcheckout (",[699,1329,1331],{"class":1330},"sBMFI","234ms",[699,1333,729],{"class":705},[699,1335,1336,1339,1341,1344,1347,1350,1352,1354,1356],{"class":701,"line":732},[699,1337,1338],{"class":1330},"  user:",[699,1340,753],{"class":723},[699,1342,1343],{"class":723}," id:",[699,1345,1346],{"class":723}," 1,",[699,1348,1349],{"class":723}," plan:",[699,1351,803],{"class":709},[699,1353,1022],{"class":723},[699,1355,720],{"class":709},[699,1357,1358],{"class":723}," }\n",[699,1360,1361,1364,1366,1368,1371,1374,1377,1380,1382],{"class":701,"line":776},[699,1362,1363],{"class":1330},"  cart:",[699,1365,753],{"class":723},[699,1367,1343],{"class":723},[699,1369,1370],{"class":723}," 42,",[699,1372,1373],{"class":723}," items:",[699,1375,1376],{"class":723}," 3,",[699,1378,1379],{"class":723}," total:",[699,1381,1076],{"class":883},[699,1383,1358],{"class":723},[699,1385,1386,1389,1391,1394,1396,1398,1400,1402,1405,1407,1409,1411],{"class":701,"line":816},[699,1387,1388],{"class":1330},"  payment:",[699,1390,753],{"class":723},[699,1392,1393],{"class":723}," method:",[699,1395,803],{"class":709},[699,1397,1112],{"class":723},[699,1399,720],{"class":709},[699,1401,750],{"class":723},[699,1403,1404],{"class":723}," status:",[699,1406,803],{"class":709},[699,1408,1126],{"class":723},[699,1410,720],{"class":709},[699,1412,1358],{"class":723},[699,1414,1415,1418],{"class":701,"line":836},[699,1416,1417],{"class":1330},"  status:",[699,1419,1420],{"class":883}," 200\n",[613,1422,1423],{},"One log, all context. Everything you need to understand what happened.",[677,1425,1427],{"id":1426},"accumulate-context-emit-once","Accumulate context, emit once",[1429,1430,1432,1435],"h3",{"id":1431},"createlogger-general-purpose",[696,1433,1434],{},"createLogger"," (General Purpose)",[613,1437,1438,1439,1442],{},"Use ",[696,1440,1441],{},"createLogger()"," for scripts, background jobs, queue workers, cron jobs, or any operation where you manage the lifecycle:",[688,1444,1447],{"className":690,"code":1445,"filename":1446,"language":693,"meta":694,"style":694},"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",[696,1448,1449,1472,1476,1510,1514,1544,1548,1579,1608,1613,1627,1650,1710,1719,1725,1730,1763],{"__ignoreMap":694},[699,1450,1451,1453,1455,1458,1460,1462,1464,1466,1468,1470],{"class":701,"line":702},[699,1452,936],{"class":935},[699,1454,753],{"class":709},[699,1456,1457],{"class":705}," initLogger",[699,1459,750],{"class":709},[699,1461,1149],{"class":705},[699,1463,811],{"class":709},[699,1465,946],{"class":935},[699,1467,803],{"class":709},[699,1469,951],{"class":723},[699,1471,954],{"class":709},[699,1473,1474],{"class":701,"line":732},[699,1475,960],{"emptyLinePlaceholder":959},[699,1477,1478,1481,1483,1485,1488,1490,1492,1495,1497,1499,1502,1504,1506,1508],{"class":701,"line":776},[699,1479,1480],{"class":713},"initLogger",[699,1482,717],{"class":705},[699,1484,996],{"class":709},[699,1486,1487],{"class":756}," env",[699,1489,760],{"class":709},[699,1491,753],{"class":709},[699,1493,1494],{"class":756}," service",[699,1496,760],{"class":709},[699,1498,803],{"class":709},[699,1500,1501],{"class":723},"migrate",[699,1503,720],{"class":709},[699,1505,811],{"class":709},[699,1507,811],{"class":709},[699,1509,729],{"class":705},[699,1511,1512],{"class":701,"line":816},[699,1513,960],{"emptyLinePlaceholder":959},[699,1515,1516,1518,1520,1522,1524,1526,1528,1531,1533,1535,1538,1540,1542],{"class":701,"line":836},[699,1517,966],{"class":965},[699,1519,969],{"class":705},[699,1521,972],{"class":709},[699,1523,1149],{"class":713},[699,1525,717],{"class":705},[699,1527,996],{"class":709},[699,1529,1530],{"class":756}," task",[699,1532,760],{"class":709},[699,1534,803],{"class":709},[699,1536,1537],{"class":723},"user-migration",[699,1539,720],{"class":709},[699,1541,811],{"class":709},[699,1543,729],{"class":705},[699,1545,1546],{"class":701,"line":856},[699,1547,960],{"emptyLinePlaceholder":959},[699,1549,1550,1552,1555,1557,1560,1563,1565,1568,1570,1572,1575,1577],{"class":701,"line":1085},[699,1551,966],{"class":965},[699,1553,1554],{"class":705}," users ",[699,1556,972],{"class":709},[699,1558,1559],{"class":935}," await",[699,1561,1562],{"class":705}," db",[699,1564,710],{"class":709},[699,1566,1567],{"class":713},"query",[699,1569,717],{"class":705},[699,1571,720],{"class":709},[699,1573,1574],{"class":723},"SELECT * FROM legacy_users",[699,1576,720],{"class":709},[699,1578,729],{"class":705},[699,1580,1582,1584,1586,1588,1590,1592,1594,1596,1599,1601,1604,1606],{"class":701,"line":1581},8,[699,1583,986],{"class":705},[699,1585,710],{"class":709},[699,1587,991],{"class":713},[699,1589,717],{"class":705},[699,1591,996],{"class":709},[699,1593,1273],{"class":756},[699,1595,760],{"class":709},[699,1597,1598],{"class":705}," users",[699,1600,710],{"class":709},[699,1602,1603],{"class":705},"length ",[699,1605,771],{"class":709},[699,1607,729],{"class":705},[699,1609,1611],{"class":701,"line":1610},9,[699,1612,960],{"emptyLinePlaceholder":959},[699,1614,1616,1619,1622,1624],{"class":701,"line":1615},10,[699,1617,1618],{"class":965},"let",[699,1620,1621],{"class":705}," migrated ",[699,1623,972],{"class":709},[699,1625,1626],{"class":883}," 0\n",[699,1628,1630,1633,1636,1638,1641,1644,1647],{"class":701,"line":1629},11,[699,1631,1632],{"class":935},"for",[699,1634,1635],{"class":705}," (",[699,1637,966],{"class":965},[699,1639,1640],{"class":705}," user ",[699,1642,1643],{"class":709},"of",[699,1645,1646],{"class":705}," users) ",[699,1648,1649],{"class":709},"{\n",[699,1651,1653,1656,1659,1661,1664,1666,1668,1670,1672,1674,1676,1679,1681,1684,1686,1688,1690,1693,1695,1697,1699,1701,1703,1706,1708],{"class":701,"line":1652},12,[699,1654,1655],{"class":935},"  await",[699,1657,1658],{"class":705}," newDb",[699,1660,710],{"class":709},[699,1662,1663],{"class":713},"upsert",[699,1665,717],{"class":756},[699,1667,996],{"class":709},[699,1669,1005],{"class":756},[699,1671,760],{"class":709},[699,1673,763],{"class":705},[699,1675,710],{"class":709},[699,1677,1678],{"class":705},"id",[699,1680,750],{"class":709},[699,1682,1683],{"class":756}," email",[699,1685,760],{"class":709},[699,1687,763],{"class":705},[699,1689,710],{"class":709},[699,1691,1692],{"class":705},"email",[699,1694,750],{"class":709},[699,1696,1015],{"class":756},[699,1698,760],{"class":709},[699,1700,763],{"class":705},[699,1702,710],{"class":709},[699,1704,1705],{"class":705},"plan",[699,1707,811],{"class":709},[699,1709,729],{"class":756},[699,1711,1713,1716],{"class":701,"line":1712},13,[699,1714,1715],{"class":705},"  migrated",[699,1717,1718],{"class":709},"++\n",[699,1720,1722],{"class":701,"line":1721},14,[699,1723,1724],{"class":709},"}\n",[699,1726,1728],{"class":701,"line":1727},15,[699,1729,960],{"emptyLinePlaceholder":959},[699,1731,1733,1735,1737,1739,1741,1743,1746,1748,1750,1752,1754,1757,1759,1761],{"class":701,"line":1732},16,[699,1734,986],{"class":705},[699,1736,710],{"class":709},[699,1738,991],{"class":713},[699,1740,717],{"class":705},[699,1742,996],{"class":709},[699,1744,1745],{"class":705}," migrated",[699,1747,750],{"class":709},[699,1749,1119],{"class":756},[699,1751,760],{"class":709},[699,1753,803],{"class":709},[699,1755,1756],{"class":723},"complete",[699,1758,720],{"class":709},[699,1760,811],{"class":709},[699,1762,729],{"class":705},[699,1764,1766,1768,1770,1772],{"class":701,"line":1765},17,[699,1767,986],{"class":705},[699,1769,710],{"class":709},[699,1771,1302],{"class":713},[699,1773,1305],{"class":705},[1429,1775,1777,1780],{"id":1776},"createrequestlogger-http-contexts",[696,1778,1779],{},"createRequestLogger"," (HTTP Contexts)",[613,1782,1438,1783,1786,1787,1789,1790,1793,1794,1797,1798,760],{},[696,1784,1785],{},"createRequestLogger()"," when working with HTTP requests outside of a framework integration. It's a thin wrapper around ",[696,1788,1434],{}," that pre-populates ",[696,1791,1792],{},"method",", ",[696,1795,1796],{},"path",", and ",[696,1799,1800],{},"requestId",[688,1802,1805],{"className":690,"code":1803,"filename":1804,"language":693,"meta":694,"style":694},"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",[696,1806,1807,1830,1834,1865,1869,1912,1916,1958,1996,2000],{"__ignoreMap":694},[699,1808,1809,1811,1813,1815,1817,1820,1822,1824,1826,1828],{"class":701,"line":702},[699,1810,936],{"class":935},[699,1812,753],{"class":709},[699,1814,1457],{"class":705},[699,1816,750],{"class":709},[699,1818,1819],{"class":705}," createRequestLogger",[699,1821,811],{"class":709},[699,1823,946],{"class":935},[699,1825,803],{"class":709},[699,1827,951],{"class":723},[699,1829,954],{"class":709},[699,1831,1832],{"class":701,"line":732},[699,1833,960],{"emptyLinePlaceholder":959},[699,1835,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854,1857,1859,1861,1863],{"class":701,"line":776},[699,1837,1480],{"class":713},[699,1839,717],{"class":705},[699,1841,996],{"class":709},[699,1843,1487],{"class":756},[699,1845,760],{"class":709},[699,1847,753],{"class":709},[699,1849,1494],{"class":756},[699,1851,760],{"class":709},[699,1853,803],{"class":709},[699,1855,1856],{"class":723},"my-worker",[699,1858,720],{"class":709},[699,1860,811],{"class":709},[699,1862,811],{"class":709},[699,1864,729],{"class":705},[699,1866,1867],{"class":701,"line":816},[699,1868,960],{"emptyLinePlaceholder":959},[699,1870,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1892,1894,1896,1899,1901,1903,1906,1908,1910],{"class":701,"line":836},[699,1872,966],{"class":965},[699,1874,969],{"class":705},[699,1876,972],{"class":709},[699,1878,1819],{"class":713},[699,1880,717],{"class":705},[699,1882,996],{"class":709},[699,1884,1105],{"class":756},[699,1886,760],{"class":709},[699,1888,803],{"class":709},[699,1890,1891],{"class":723},"POST",[699,1893,720],{"class":709},[699,1895,750],{"class":709},[699,1897,1898],{"class":756}," path",[699,1900,760],{"class":709},[699,1902,803],{"class":709},[699,1904,1905],{"class":723},"\u002Fapi\u002Fcheckout",[699,1907,720],{"class":709},[699,1909,811],{"class":709},[699,1911,729],{"class":705},[699,1913,1914],{"class":701,"line":856},[699,1915,960],{"emptyLinePlaceholder":959},[699,1917,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954,1956],{"class":701,"line":1085},[699,1919,986],{"class":705},[699,1921,710],{"class":709},[699,1923,991],{"class":713},[699,1925,717],{"class":705},[699,1927,996],{"class":709},[699,1929,763],{"class":756},[699,1931,760],{"class":709},[699,1933,753],{"class":709},[699,1935,1005],{"class":756},[699,1937,760],{"class":709},[699,1939,1010],{"class":883},[699,1941,750],{"class":709},[699,1943,1015],{"class":756},[699,1945,760],{"class":709},[699,1947,803],{"class":709},[699,1949,1022],{"class":723},[699,1951,720],{"class":709},[699,1953,811],{"class":709},[699,1955,811],{"class":709},[699,1957,729],{"class":705},[699,1959,1960,1962,1964,1966,1968,1970,1972,1974,1976,1978,1980,1982,1984,1986,1988,1990,1992,1994],{"class":701,"line":1581},[699,1961,986],{"class":705},[699,1963,710],{"class":709},[699,1965,991],{"class":713},[699,1967,717],{"class":705},[699,1969,996],{"class":709},[699,1971,1045],{"class":756},[699,1973,760],{"class":709},[699,1975,753],{"class":709},[699,1977,1061],{"class":756},[699,1979,760],{"class":709},[699,1981,1066],{"class":883},[699,1983,750],{"class":709},[699,1985,1071],{"class":756},[699,1987,760],{"class":709},[699,1989,1076],{"class":883},[699,1991,811],{"class":709},[699,1993,811],{"class":709},[699,1995,729],{"class":705},[699,1997,1998],{"class":701,"line":1610},[699,1999,960],{"emptyLinePlaceholder":959},[699,2001,2002,2004,2006,2008],{"class":701,"line":1615},[699,2003,986],{"class":705},[699,2005,710],{"class":709},[699,2007,1302],{"class":713},[699,2009,1305],{"class":705},[617,2011,2012,2013,626,2015,2017,2018,2021],{"color":714,"icon":13},"Both ",[696,2014,1434],{},[696,2016,1779],{}," require a manual ",[696,2019,2020],{},"log.emit()"," call. The event won't be emitted until you call it.",[1429,2023,2025,2028],{"id":2024},"uselogger-retrieving-the-request-logger",[696,2026,2027],{},"useLogger"," (Retrieving the Request Logger)",[613,2030,2031,2032,2035],{},"When using a framework integration (Nuxt, Hono, Express, etc.), the middleware creates a wide event logger automatically on each request. ",[696,2033,2034],{},"useLogger(event)"," retrieves that logger from the request context:",[2037,2038,2039,2235,2434,2629,2817],"framework-tabs",{},[688,2040,2042],{"className":690,"code":2041,"filename":245,"language":693,"meta":928,"style":694},"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",[696,2043,2044,2062,2066,2097,2116,2120,2163,2201,2205,2223,2229],{"__ignoreMap":694},[699,2045,2046,2048,2050,2052,2054,2056,2058,2060],{"class":701,"line":702},[699,2047,936],{"class":935},[699,2049,753],{"class":709},[699,2051,941],{"class":705},[699,2053,811],{"class":709},[699,2055,946],{"class":935},[699,2057,803],{"class":709},[699,2059,951],{"class":723},[699,2061,954],{"class":709},[699,2063,2064],{"class":701,"line":732},[699,2065,960],{"emptyLinePlaceholder":959},[699,2067,2068,2071,2074,2077,2079,2082,2084,2088,2091,2094],{"class":701,"line":776},[699,2069,2070],{"class":935},"export",[699,2072,2073],{"class":935}," default",[699,2075,2076],{"class":713}," defineEventHandler",[699,2078,717],{"class":705},[699,2080,2081],{"class":965},"async",[699,2083,1635],{"class":709},[699,2085,2087],{"class":2086},"sHdIc","event",[699,2089,2090],{"class":709},")",[699,2092,2093],{"class":965}," =>",[699,2095,2096],{"class":709}," {\n",[699,2098,2099,2102,2105,2108,2110,2112,2114],{"class":701,"line":816},[699,2100,2101],{"class":965},"  const",[699,2103,2104],{"class":705}," log",[699,2106,2107],{"class":709}," =",[699,2109,941],{"class":713},[699,2111,717],{"class":756},[699,2113,2087],{"class":705},[699,2115,729],{"class":756},[699,2117,2118],{"class":701,"line":836},[699,2119,960],{"emptyLinePlaceholder":959},[699,2121,2122,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159,2161],{"class":701,"line":856},[699,2123,2124],{"class":705},"  log",[699,2126,710],{"class":709},[699,2128,991],{"class":713},[699,2130,717],{"class":756},[699,2132,996],{"class":709},[699,2134,763],{"class":756},[699,2136,760],{"class":709},[699,2138,753],{"class":709},[699,2140,1005],{"class":756},[699,2142,760],{"class":709},[699,2144,1010],{"class":883},[699,2146,750],{"class":709},[699,2148,1015],{"class":756},[699,2150,760],{"class":709},[699,2152,803],{"class":709},[699,2154,1022],{"class":723},[699,2156,720],{"class":709},[699,2158,811],{"class":709},[699,2160,811],{"class":709},[699,2162,729],{"class":756},[699,2164,2165,2167,2169,2171,2173,2175,2177,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2199],{"class":701,"line":1085},[699,2166,2124],{"class":705},[699,2168,710],{"class":709},[699,2170,991],{"class":713},[699,2172,717],{"class":756},[699,2174,996],{"class":709},[699,2176,1045],{"class":756},[699,2178,760],{"class":709},[699,2180,753],{"class":709},[699,2182,1061],{"class":756},[699,2184,760],{"class":709},[699,2186,1066],{"class":883},[699,2188,750],{"class":709},[699,2190,1071],{"class":756},[699,2192,760],{"class":709},[699,2194,1076],{"class":883},[699,2196,811],{"class":709},[699,2198,811],{"class":709},[699,2200,729],{"class":756},[699,2202,2203],{"class":701,"line":1581},[699,2204,960],{"emptyLinePlaceholder":959},[699,2206,2207,2210,2212,2215,2217,2221],{"class":701,"line":1610},[699,2208,2209],{"class":935},"  return",[699,2211,753],{"class":709},[699,2213,2214],{"class":756}," success",[699,2216,760],{"class":709},[699,2218,2220],{"class":2219},"sfNiH"," true",[699,2222,1358],{"class":709},[699,2224,2225],{"class":701,"line":1615},[699,2226,2228],{"class":2227},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[699,2230,2231,2233],{"class":701,"line":1629},[699,2232,771],{"class":709},[699,2234,729],{"class":705},[688,2236,2239],{"className":690,"code":2237,"filename":260,"language":693,"meta":2238,"style":694},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger } from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineHandler(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","routes\u002Fapi\u002Fcheckout.post.ts",[696,2240,2241,2261,2280,2284,2306,2322,2326,2368,2406,2410,2424,2428],{"__ignoreMap":694},[699,2242,2243,2245,2247,2250,2252,2254,2256,2259],{"class":701,"line":702},[699,2244,936],{"class":935},[699,2246,753],{"class":709},[699,2248,2249],{"class":705}," defineHandler",[699,2251,811],{"class":709},[699,2253,946],{"class":935},[699,2255,803],{"class":709},[699,2257,2258],{"class":723},"nitro\u002Fh3",[699,2260,954],{"class":709},[699,2262,2263,2265,2267,2269,2271,2273,2275,2278],{"class":701,"line":732},[699,2264,936],{"class":935},[699,2266,753],{"class":709},[699,2268,941],{"class":705},[699,2270,811],{"class":709},[699,2272,946],{"class":935},[699,2274,803],{"class":709},[699,2276,2277],{"class":723},"evlog\u002Fnitro\u002Fv3",[699,2279,954],{"class":709},[699,2281,2282],{"class":701,"line":776},[699,2283,960],{"emptyLinePlaceholder":959},[699,2285,2286,2288,2290,2292,2294,2296,2298,2300,2302,2304],{"class":701,"line":816},[699,2287,2070],{"class":935},[699,2289,2073],{"class":935},[699,2291,2249],{"class":713},[699,2293,717],{"class":705},[699,2295,2081],{"class":965},[699,2297,1635],{"class":709},[699,2299,2087],{"class":2086},[699,2301,2090],{"class":709},[699,2303,2093],{"class":965},[699,2305,2096],{"class":709},[699,2307,2308,2310,2312,2314,2316,2318,2320],{"class":701,"line":836},[699,2309,2101],{"class":965},[699,2311,2104],{"class":705},[699,2313,2107],{"class":709},[699,2315,941],{"class":713},[699,2317,717],{"class":756},[699,2319,2087],{"class":705},[699,2321,729],{"class":756},[699,2323,2324],{"class":701,"line":856},[699,2325,960],{"emptyLinePlaceholder":959},[699,2327,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346,2348,2350,2352,2354,2356,2358,2360,2362,2364,2366],{"class":701,"line":1085},[699,2329,2124],{"class":705},[699,2331,710],{"class":709},[699,2333,991],{"class":713},[699,2335,717],{"class":756},[699,2337,996],{"class":709},[699,2339,763],{"class":756},[699,2341,760],{"class":709},[699,2343,753],{"class":709},[699,2345,1005],{"class":756},[699,2347,760],{"class":709},[699,2349,1010],{"class":883},[699,2351,750],{"class":709},[699,2353,1015],{"class":756},[699,2355,760],{"class":709},[699,2357,803],{"class":709},[699,2359,1022],{"class":723},[699,2361,720],{"class":709},[699,2363,811],{"class":709},[699,2365,811],{"class":709},[699,2367,729],{"class":756},[699,2369,2370,2372,2374,2376,2378,2380,2382,2384,2386,2388,2390,2392,2394,2396,2398,2400,2402,2404],{"class":701,"line":1581},[699,2371,2124],{"class":705},[699,2373,710],{"class":709},[699,2375,991],{"class":713},[699,2377,717],{"class":756},[699,2379,996],{"class":709},[699,2381,1045],{"class":756},[699,2383,760],{"class":709},[699,2385,753],{"class":709},[699,2387,1061],{"class":756},[699,2389,760],{"class":709},[699,2391,1066],{"class":883},[699,2393,750],{"class":709},[699,2395,1071],{"class":756},[699,2397,760],{"class":709},[699,2399,1076],{"class":883},[699,2401,811],{"class":709},[699,2403,811],{"class":709},[699,2405,729],{"class":756},[699,2407,2408],{"class":701,"line":1610},[699,2409,960],{"emptyLinePlaceholder":959},[699,2411,2412,2414,2416,2418,2420,2422],{"class":701,"line":1615},[699,2413,2209],{"class":935},[699,2415,753],{"class":709},[699,2417,2214],{"class":756},[699,2419,760],{"class":709},[699,2421,2220],{"class":2219},[699,2423,1358],{"class":709},[699,2425,2426],{"class":701,"line":1629},[699,2427,2228],{"class":2227},[699,2429,2430,2432],{"class":701,"line":1652},[699,2431,771],{"class":709},[699,2433,729],{"class":705},[688,2435,2438],{"className":690,"code":2436,"filename":250,"language":693,"meta":2437,"style":694},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async () => {\n  const log = useLogger()\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  return Response.json({ success: true })\n  \u002F\u002F auto-emitted on response end\n})\n","app\u002Fapi\u002Fcheckout\u002Froute.ts",[696,2439,2440,2464,2468,2493,2505,2509,2551,2589,2593,2619,2623],{"__ignoreMap":694},[699,2441,2442,2444,2446,2449,2451,2453,2455,2457,2459,2462],{"class":701,"line":702},[699,2443,936],{"class":935},[699,2445,753],{"class":709},[699,2447,2448],{"class":705}," withEvlog",[699,2450,750],{"class":709},[699,2452,941],{"class":705},[699,2454,811],{"class":709},[699,2456,946],{"class":935},[699,2458,803],{"class":709},[699,2460,2461],{"class":723},"@\u002Flib\u002Fevlog",[699,2463,954],{"class":709},[699,2465,2466],{"class":701,"line":732},[699,2467,960],{"emptyLinePlaceholder":959},[699,2469,2470,2472,2475,2478,2480,2482,2484,2486,2489,2491],{"class":701,"line":776},[699,2471,2070],{"class":935},[699,2473,2474],{"class":965}," const",[699,2476,2477],{"class":705}," POST ",[699,2479,972],{"class":709},[699,2481,2448],{"class":713},[699,2483,717],{"class":705},[699,2485,2081],{"class":965},[699,2487,2488],{"class":709}," ()",[699,2490,2093],{"class":965},[699,2492,2096],{"class":709},[699,2494,2495,2497,2499,2501,2503],{"class":701,"line":816},[699,2496,2101],{"class":965},[699,2498,2104],{"class":705},[699,2500,2107],{"class":709},[699,2502,941],{"class":713},[699,2504,1305],{"class":756},[699,2506,2507],{"class":701,"line":836},[699,2508,960],{"emptyLinePlaceholder":959},[699,2510,2511,2513,2515,2517,2519,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539,2541,2543,2545,2547,2549],{"class":701,"line":856},[699,2512,2124],{"class":705},[699,2514,710],{"class":709},[699,2516,991],{"class":713},[699,2518,717],{"class":756},[699,2520,996],{"class":709},[699,2522,763],{"class":756},[699,2524,760],{"class":709},[699,2526,753],{"class":709},[699,2528,1005],{"class":756},[699,2530,760],{"class":709},[699,2532,1010],{"class":883},[699,2534,750],{"class":709},[699,2536,1015],{"class":756},[699,2538,760],{"class":709},[699,2540,803],{"class":709},[699,2542,1022],{"class":723},[699,2544,720],{"class":709},[699,2546,811],{"class":709},[699,2548,811],{"class":709},[699,2550,729],{"class":756},[699,2552,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585,2587],{"class":701,"line":1085},[699,2554,2124],{"class":705},[699,2556,710],{"class":709},[699,2558,991],{"class":713},[699,2560,717],{"class":756},[699,2562,996],{"class":709},[699,2564,1045],{"class":756},[699,2566,760],{"class":709},[699,2568,753],{"class":709},[699,2570,1061],{"class":756},[699,2572,760],{"class":709},[699,2574,1066],{"class":883},[699,2576,750],{"class":709},[699,2578,1071],{"class":756},[699,2580,760],{"class":709},[699,2582,1076],{"class":883},[699,2584,811],{"class":709},[699,2586,811],{"class":709},[699,2588,729],{"class":756},[699,2590,2591],{"class":701,"line":1581},[699,2592,960],{"emptyLinePlaceholder":959},[699,2594,2595,2597,2600,2602,2605,2607,2609,2611,2613,2615,2617],{"class":701,"line":1610},[699,2596,2209],{"class":935},[699,2598,2599],{"class":705}," Response",[699,2601,710],{"class":709},[699,2603,2604],{"class":713},"json",[699,2606,717],{"class":756},[699,2608,996],{"class":709},[699,2610,2214],{"class":756},[699,2612,760],{"class":709},[699,2614,2220],{"class":2219},[699,2616,811],{"class":709},[699,2618,729],{"class":756},[699,2620,2621],{"class":701,"line":1615},[699,2622,2228],{"class":2227},[699,2624,2625,2627],{"class":701,"line":1629},[699,2626,771],{"class":709},[699,2628,729],{"class":705},[688,2630,2633],{"className":690,"code":2631,"filename":280,"language":693,"meta":2632,"style":694},"app.post('\u002Fapi\u002Fcheckout', async (c) => {\n  const log = c.get('log')\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  return c.json({ success: true })\n  \u002F\u002F auto-emitted on response end\n})\n","src\u002Findex.ts",[696,2634,2635,2669,2695,2699,2741,2779,2783,2807,2811],{"__ignoreMap":694},[699,2636,2637,2640,2642,2645,2647,2649,2651,2653,2655,2658,2660,2663,2665,2667],{"class":701,"line":702},[699,2638,2639],{"class":705},"app",[699,2641,710],{"class":709},[699,2643,2644],{"class":713},"post",[699,2646,717],{"class":705},[699,2648,720],{"class":709},[699,2650,1905],{"class":723},[699,2652,720],{"class":709},[699,2654,750],{"class":709},[699,2656,2657],{"class":965}," async",[699,2659,1635],{"class":709},[699,2661,2662],{"class":2086},"c",[699,2664,2090],{"class":709},[699,2666,2093],{"class":965},[699,2668,2096],{"class":709},[699,2670,2671,2673,2675,2677,2680,2682,2685,2687,2689,2691,2693],{"class":701,"line":732},[699,2672,2101],{"class":965},[699,2674,2104],{"class":705},[699,2676,2107],{"class":709},[699,2678,2679],{"class":705}," c",[699,2681,710],{"class":709},[699,2683,2684],{"class":713},"get",[699,2686,717],{"class":756},[699,2688,720],{"class":709},[699,2690,986],{"class":723},[699,2692,720],{"class":709},[699,2694,729],{"class":756},[699,2696,2697],{"class":701,"line":776},[699,2698,960],{"emptyLinePlaceholder":959},[699,2700,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739],{"class":701,"line":816},[699,2702,2124],{"class":705},[699,2704,710],{"class":709},[699,2706,991],{"class":713},[699,2708,717],{"class":756},[699,2710,996],{"class":709},[699,2712,763],{"class":756},[699,2714,760],{"class":709},[699,2716,753],{"class":709},[699,2718,1005],{"class":756},[699,2720,760],{"class":709},[699,2722,1010],{"class":883},[699,2724,750],{"class":709},[699,2726,1015],{"class":756},[699,2728,760],{"class":709},[699,2730,803],{"class":709},[699,2732,1022],{"class":723},[699,2734,720],{"class":709},[699,2736,811],{"class":709},[699,2738,811],{"class":709},[699,2740,729],{"class":756},[699,2742,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2777],{"class":701,"line":836},[699,2744,2124],{"class":705},[699,2746,710],{"class":709},[699,2748,991],{"class":713},[699,2750,717],{"class":756},[699,2752,996],{"class":709},[699,2754,1045],{"class":756},[699,2756,760],{"class":709},[699,2758,753],{"class":709},[699,2760,1061],{"class":756},[699,2762,760],{"class":709},[699,2764,1066],{"class":883},[699,2766,750],{"class":709},[699,2768,1071],{"class":756},[699,2770,760],{"class":709},[699,2772,1076],{"class":883},[699,2774,811],{"class":709},[699,2776,811],{"class":709},[699,2778,729],{"class":756},[699,2780,2781],{"class":701,"line":856},[699,2782,960],{"emptyLinePlaceholder":959},[699,2784,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805],{"class":701,"line":1085},[699,2786,2209],{"class":935},[699,2788,2679],{"class":705},[699,2790,710],{"class":709},[699,2792,2604],{"class":713},[699,2794,717],{"class":756},[699,2796,996],{"class":709},[699,2798,2214],{"class":756},[699,2800,760],{"class":709},[699,2802,2220],{"class":2219},[699,2804,811],{"class":709},[699,2806,729],{"class":756},[699,2808,2809],{"class":701,"line":1581},[699,2810,2228],{"class":2227},[699,2812,2813,2815],{"class":701,"line":1610},[699,2814,771],{"class":709},[699,2816,729],{"class":705},[688,2818,2820],{"className":690,"code":2819,"filename":275,"language":693,"meta":2632,"style":694},"app.post('\u002Fapi\u002Fcheckout', async (req, res) => {\n  const log = req.log\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  return res.json({ success: true })\n  \u002F\u002F auto-emitted on response end\n})\n",[696,2821,2822,2858,2874,2878,2920,2958,2962,2986,2990],{"__ignoreMap":694},[699,2823,2824,2826,2828,2830,2832,2834,2836,2838,2840,2842,2844,2847,2849,2852,2854,2856],{"class":701,"line":702},[699,2825,2639],{"class":705},[699,2827,710],{"class":709},[699,2829,2644],{"class":713},[699,2831,717],{"class":705},[699,2833,720],{"class":709},[699,2835,1905],{"class":723},[699,2837,720],{"class":709},[699,2839,750],{"class":709},[699,2841,2657],{"class":965},[699,2843,1635],{"class":709},[699,2845,2846],{"class":2086},"req",[699,2848,750],{"class":709},[699,2850,2851],{"class":2086}," res",[699,2853,2090],{"class":709},[699,2855,2093],{"class":965},[699,2857,2096],{"class":709},[699,2859,2860,2862,2864,2866,2869,2871],{"class":701,"line":732},[699,2861,2101],{"class":965},[699,2863,2104],{"class":705},[699,2865,2107],{"class":709},[699,2867,2868],{"class":705}," req",[699,2870,710],{"class":709},[699,2872,2873],{"class":705},"log\n",[699,2875,2876],{"class":701,"line":776},[699,2877,960],{"emptyLinePlaceholder":959},[699,2879,2880,2882,2884,2886,2888,2890,2892,2894,2896,2898,2900,2902,2904,2906,2908,2910,2912,2914,2916,2918],{"class":701,"line":816},[699,2881,2124],{"class":705},[699,2883,710],{"class":709},[699,2885,991],{"class":713},[699,2887,717],{"class":756},[699,2889,996],{"class":709},[699,2891,763],{"class":756},[699,2893,760],{"class":709},[699,2895,753],{"class":709},[699,2897,1005],{"class":756},[699,2899,760],{"class":709},[699,2901,1010],{"class":883},[699,2903,750],{"class":709},[699,2905,1015],{"class":756},[699,2907,760],{"class":709},[699,2909,803],{"class":709},[699,2911,1022],{"class":723},[699,2913,720],{"class":709},[699,2915,811],{"class":709},[699,2917,811],{"class":709},[699,2919,729],{"class":756},[699,2921,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946,2948,2950,2952,2954,2956],{"class":701,"line":836},[699,2923,2124],{"class":705},[699,2925,710],{"class":709},[699,2927,991],{"class":713},[699,2929,717],{"class":756},[699,2931,996],{"class":709},[699,2933,1045],{"class":756},[699,2935,760],{"class":709},[699,2937,753],{"class":709},[699,2939,1061],{"class":756},[699,2941,760],{"class":709},[699,2943,1066],{"class":883},[699,2945,750],{"class":709},[699,2947,1071],{"class":756},[699,2949,760],{"class":709},[699,2951,1076],{"class":883},[699,2953,811],{"class":709},[699,2955,811],{"class":709},[699,2957,729],{"class":756},[699,2959,2960],{"class":701,"line":856},[699,2961,960],{"emptyLinePlaceholder":959},[699,2963,2964,2966,2968,2970,2972,2974,2976,2978,2980,2982,2984],{"class":701,"line":1085},[699,2965,2209],{"class":935},[699,2967,2851],{"class":705},[699,2969,710],{"class":709},[699,2971,2604],{"class":713},[699,2973,717],{"class":756},[699,2975,996],{"class":709},[699,2977,2214],{"class":756},[699,2979,760],{"class":709},[699,2981,2220],{"class":2219},[699,2983,811],{"class":709},[699,2985,729],{"class":756},[699,2987,2988],{"class":701,"line":1581},[699,2989,2228],{"class":2227},[699,2991,2992,2994],{"class":701,"line":1610},[699,2993,771],{"class":709},[699,2995,729],{"class":705},[617,2997,2998,3000,3001,3003],{"color":714,"icon":13},[696,2999,2027],{}," 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, ",[696,3002,2027],{}," is auto-imported.",[677,3005,3007],{"id":3006},"after-emit-sealing-and-background-work","After emit: sealing and background work",[613,3009,3010,3011,3014,3015,3017,3018,3021,3022,1793,3024,1793,3027,1797,3029,3032,3033,3036,3037,3043,3044,3047,3048,3051,3052,3055],{},"When the wide event is ",[897,3012,3013],{},"emitted"," (automatically at the end of the request, or when you call ",[696,3016,2020],{}," yourself), that logger instance is ",[897,3019,3020],{},"sealed",". Further ",[696,3023,991],{},[696,3025,3026],{},"error",[696,3028,714],{},[696,3030,3031],{},"warn"," calls do ",[897,3034,3035],{},"not"," update the event that was already sent to your drains. They are ignored and evlog prints a ",[897,3038,3039,3042],{},[696,3040,3041],{},"[evlog]"," warning"," to the console with the keys that were dropped. This also applies when ",[897,3045,3046],{},"head sampling"," discards the event (",[696,3049,3050],{},"emit()"," returned ",[696,3053,3054],{},"null","): the logger is still sealed for that unit of work.",[613,3057,3058,3059,3062,3063,3066,3067,3070,3071,3074],{},"This matters for ",[897,3060,3061],{},"async work that outlives the handler"," (fire-and-forget promises, ",[696,3064,3065],{},"setTimeout",", tasks started but not awaited). On many runtimes, ",[696,3068,3069],{},"AsyncLocalStorage"," keeps returning the same request logger, so ",[696,3072,3073],{},"useLogger()"," still succeeds even though the HTTP response, and the wide event, are already finished. Without warnings, that looks like silent data loss.",[1429,3076,3078],{"id":3077},"logforklabel-fn",[696,3079,3080],{},"log.fork(label, fn)",[613,3082,3083,3084,3087,3088,3092,3093,3096,3097,1793,3100,3102,3103,3105],{},"For intentional background work that should produce ",[897,3085,3086],{},"its own"," wide event, use ",[897,3089,3090],{},[696,3091,3080],{}," when your integration provides it (Express, Fastify, NestJS, SvelteKit, React Router, Next.js ",[696,3094,3095],{},"withEvlog",", Elysia). Inside ",[696,3098,3099],{},"fn",[696,3101,3073],{}," resolves to the forked logger. When ",[696,3104,3099],{}," completes (or throws), that logger emits an event with:",[639,3107,3108,3120],{},[642,3109,3110,3115,3116,3119],{},[897,3111,3112],{},[696,3113,3114],{},"operation",": the ",[696,3117,3118],{},"label"," you passed",[642,3121,3122,3127,3128,3130],{},[897,3123,3124],{},[696,3125,3126],{},"_parentRequestId",": the parent request’s ",[696,3129,1800],{}," (for correlation in queries and dashboards)",[613,3132,3133,3134,3137],{},"The parent wide event may be emitted ",[897,3135,3136],{},"before"," the child event; they are two separate events ordered by time.",[613,3139,3140,3143,3144,3146,3147,3150,3151,3153],{},[897,3141,3142],{},"Not available yet:"," Hono (no ",[696,3145,2027],{}," without ",[696,3148,3149],{},"c.get('log')"," + ALS) and Nitro\u002FNuxt ",[696,3152,2034],{},", so use the post-emit warnings to catch mistakes; a different API may arrive later for event-scoped forks.",[613,3155,3156,3157,3160],{},"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 ",[696,3158,3159],{},"createAILogger(log)"," metadata lands on the same request event automatically.",[688,3162,3165],{"className":690,"code":3163,"filename":3164,"language":693,"meta":694,"style":694},"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",[696,3166,3167,3191,3195,3200,3214,3237,3241,3272,3285,3309],{"__ignoreMap":694},[699,3168,3169,3171,3173,3176,3178,3180,3182,3184,3186,3189],{"class":701,"line":702},[699,3170,936],{"class":935},[699,3172,753],{"class":709},[699,3174,3175],{"class":705}," evlog",[699,3177,750],{"class":709},[699,3179,941],{"class":705},[699,3181,811],{"class":709},[699,3183,946],{"class":935},[699,3185,803],{"class":709},[699,3187,3188],{"class":723},"evlog\u002Fexpress",[699,3190,954],{"class":709},[699,3192,3193],{"class":701,"line":732},[699,3194,960],{"emptyLinePlaceholder":959},[699,3196,3197],{"class":701,"line":776},[699,3198,3199],{"class":2227},"\u002F\u002F Inside a route after evlog middleware:\n",[699,3201,3202,3204,3206,3208,3210,3212],{"class":701,"line":816},[699,3203,966],{"class":965},[699,3205,969],{"class":705},[699,3207,972],{"class":709},[699,3209,2868],{"class":705},[699,3211,710],{"class":709},[699,3213,2873],{"class":705},[699,3215,3216,3218,3220,3222,3224,3226,3229,3231,3233,3235],{"class":701,"line":836},[699,3217,986],{"class":705},[699,3219,710],{"class":709},[699,3221,991],{"class":713},[699,3223,717],{"class":705},[699,3225,996],{"class":709},[699,3227,3228],{"class":756}," order_dispatched",[699,3230,760],{"class":709},[699,3232,2220],{"class":2219},[699,3234,811],{"class":709},[699,3236,729],{"class":705},[699,3238,3239],{"class":701,"line":856},[699,3240,960],{"emptyLinePlaceholder":959},[699,3242,3243,3245,3247,3250,3253,3255,3257,3260,3262,3264,3266,3268,3270],{"class":701,"line":1085},[699,3244,986],{"class":705},[699,3246,710],{"class":709},[699,3248,3249],{"class":713},"fork",[699,3251,3252],{"class":709},"?.",[699,3254,717],{"class":705},[699,3256,720],{"class":709},[699,3258,3259],{"class":723},"process_order",[699,3261,720],{"class":709},[699,3263,750],{"class":709},[699,3265,2657],{"class":965},[699,3267,2488],{"class":709},[699,3269,2093],{"class":965},[699,3271,2096],{"class":709},[699,3273,3274,3276,3279,3281,3283],{"class":701,"line":1581},[699,3275,2101],{"class":965},[699,3277,3278],{"class":705}," child",[699,3280,2107],{"class":709},[699,3282,941],{"class":713},[699,3284,1305],{"class":756},[699,3286,3287,3290,3292,3294,3296,3298,3301,3303,3305,3307],{"class":701,"line":1610},[699,3288,3289],{"class":705},"  child",[699,3291,710],{"class":709},[699,3293,991],{"class":713},[699,3295,717],{"class":756},[699,3297,996],{"class":709},[699,3299,3300],{"class":756}," inventory_checked",[699,3302,760],{"class":709},[699,3304,2220],{"class":2219},[699,3306,811],{"class":709},[699,3308,729],{"class":756},[699,3310,3311,3313],{"class":701,"line":1615},[699,3312,771],{"class":709},[699,3314,729],{"class":705},[677,3316,3318],{"id":3317},"read-a-wide-event-field-by-field","Read a wide event field by field",[613,3320,3321,3322,3324,3325,1793,3327,3329,3330,710],{},"A well-designed wide event contains context from multiple layers. The examples below show what to add inside your handler or script. They assume ",[696,3323,986],{}," is already created via ",[696,3326,1434],{},[696,3328,1779],{},", or ",[696,3331,2027],{},[1429,3333,3335],{"id":3334},"operation-context","Operation Context",[613,3337,3338],{},"Basic information about the operation:",[923,3340,3341,3445],{},[688,3342,3344],{"className":690,"code":3343,"filename":928,"language":693,"meta":694,"style":694},"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",[696,3345,3346,3364,3368,3380,3392,3408,3423,3439],{"__ignoreMap":694},[699,3347,3348,3350,3352,3354,3356,3358,3360,3362],{"class":701,"line":702},[699,3349,936],{"class":935},[699,3351,753],{"class":709},[699,3353,941],{"class":705},[699,3355,811],{"class":709},[699,3357,946],{"class":935},[699,3359,803],{"class":709},[699,3361,951],{"class":723},[699,3363,954],{"class":709},[699,3365,3366],{"class":701,"line":732},[699,3367,960],{"emptyLinePlaceholder":959},[699,3369,3370,3372,3374,3376,3378],{"class":701,"line":776},[699,3371,966],{"class":965},[699,3373,969],{"class":705},[699,3375,972],{"class":709},[699,3377,941],{"class":713},[699,3379,977],{"class":705},[699,3381,3382,3384,3386,3388,3390],{"class":701,"line":816},[699,3383,986],{"class":705},[699,3385,710],{"class":709},[699,3387,991],{"class":713},[699,3389,717],{"class":705},[699,3391,1649],{"class":709},[699,3393,3394,3397,3399,3401,3403,3405],{"class":701,"line":836},[699,3395,3396],{"class":756},"  method",[699,3398,760],{"class":709},[699,3400,803],{"class":709},[699,3402,1891],{"class":723},[699,3404,720],{"class":709},[699,3406,3407],{"class":709},",\n",[699,3409,3410,3413,3415,3417,3419,3421],{"class":701,"line":856},[699,3411,3412],{"class":756},"  path",[699,3414,760],{"class":709},[699,3416,803],{"class":709},[699,3418,1905],{"class":723},[699,3420,720],{"class":709},[699,3422,3407],{"class":709},[699,3424,3425,3428,3430,3432,3435,3437],{"class":701,"line":1085},[699,3426,3427],{"class":756},"  requestId",[699,3429,760],{"class":709},[699,3431,803],{"class":709},[699,3433,3434],{"class":723},"abc-123-def",[699,3436,720],{"class":709},[699,3438,3407],{"class":709},[699,3440,3441,3443],{"class":701,"line":1581},[699,3442,771],{"class":709},[699,3444,729],{"class":705},[688,3446,3448],{"className":690,"code":3447,"filename":1138,"language":693,"meta":694,"style":694},"import { createLogger } from 'evlog'\n\nconst log = createLogger({\n  jobId: 'sync-001',\n  queue: 'emails',\n  source: 'postgres',\n})\n",[696,3449,3450,3468,3472,3486,3501,3516,3531],{"__ignoreMap":694},[699,3451,3452,3454,3456,3458,3460,3462,3464,3466],{"class":701,"line":702},[699,3453,936],{"class":935},[699,3455,753],{"class":709},[699,3457,1149],{"class":705},[699,3459,811],{"class":709},[699,3461,946],{"class":935},[699,3463,803],{"class":709},[699,3465,951],{"class":723},[699,3467,954],{"class":709},[699,3469,3470],{"class":701,"line":732},[699,3471,960],{"emptyLinePlaceholder":959},[699,3473,3474,3476,3478,3480,3482,3484],{"class":701,"line":776},[699,3475,966],{"class":965},[699,3477,969],{"class":705},[699,3479,972],{"class":709},[699,3481,1149],{"class":713},[699,3483,717],{"class":705},[699,3485,1649],{"class":709},[699,3487,3488,3491,3493,3495,3497,3499],{"class":701,"line":816},[699,3489,3490],{"class":756},"  jobId",[699,3492,760],{"class":709},[699,3494,803],{"class":709},[699,3496,1187],{"class":723},[699,3498,720],{"class":709},[699,3500,3407],{"class":709},[699,3502,3503,3506,3508,3510,3512,3514],{"class":701,"line":836},[699,3504,3505],{"class":756},"  queue",[699,3507,760],{"class":709},[699,3509,803],{"class":709},[699,3511,1201],{"class":723},[699,3513,720],{"class":709},[699,3515,3407],{"class":709},[699,3517,3518,3521,3523,3525,3527,3529],{"class":701,"line":856},[699,3519,3520],{"class":756},"  source",[699,3522,760],{"class":709},[699,3524,803],{"class":709},[699,3526,806],{"class":723},[699,3528,720],{"class":709},[699,3530,3407],{"class":709},[699,3532,3533,3535],{"class":701,"line":1085},[699,3534,771],{"class":709},[699,3536,729],{"class":705},[617,3538,3539,3540,1793,3542,1793,3544,3546],{"color":714,"icon":13},"In framework integrations, request context (",[696,3541,1792],{},[696,3543,1796],{},[696,3545,1800],{},") is auto-populated by the middleware. You don't need to set these fields manually.",[1429,3548,3550],{"id":3549},"user-actor-context","User \u002F Actor Context",[613,3552,3553],{},"Who triggered the operation:",[688,3555,3558],{"className":690,"code":3556,"filename":3557,"language":693,"meta":694,"style":694},"log.set({\n  userId: user.id,\n  email: user.email,\n  subscription: user.plan,\n  accountAge: daysSince(user.createdAt),\n})\n","services\u002Fcheckout.ts",[696,3559,3560,3572,3587,3602,3617,3637],{"__ignoreMap":694},[699,3561,3562,3564,3566,3568,3570],{"class":701,"line":702},[699,3563,986],{"class":705},[699,3565,710],{"class":709},[699,3567,991],{"class":713},[699,3569,717],{"class":705},[699,3571,1649],{"class":709},[699,3573,3574,3577,3579,3581,3583,3585],{"class":701,"line":732},[699,3575,3576],{"class":756},"  userId",[699,3578,760],{"class":709},[699,3580,763],{"class":705},[699,3582,710],{"class":709},[699,3584,1678],{"class":705},[699,3586,3407],{"class":709},[699,3588,3589,3592,3594,3596,3598,3600],{"class":701,"line":776},[699,3590,3591],{"class":756},"  email",[699,3593,760],{"class":709},[699,3595,763],{"class":705},[699,3597,710],{"class":709},[699,3599,1692],{"class":705},[699,3601,3407],{"class":709},[699,3603,3604,3607,3609,3611,3613,3615],{"class":701,"line":816},[699,3605,3606],{"class":756},"  subscription",[699,3608,760],{"class":709},[699,3610,763],{"class":705},[699,3612,710],{"class":709},[699,3614,1705],{"class":705},[699,3616,3407],{"class":709},[699,3618,3619,3622,3624,3627,3630,3632,3635],{"class":701,"line":836},[699,3620,3621],{"class":756},"  accountAge",[699,3623,760],{"class":709},[699,3625,3626],{"class":713}," daysSince",[699,3628,3629],{"class":705},"(user",[699,3631,710],{"class":709},[699,3633,3634],{"class":705},"createdAt)",[699,3636,3407],{"class":709},[699,3638,3639,3641],{"class":701,"line":856},[699,3640,771],{"class":709},[699,3642,729],{"class":705},[1429,3644,3646],{"id":3645},"business-context","Business Context",[613,3648,3649],{},"Domain-specific data relevant to the operation:",[688,3651,3653],{"className":690,"code":3652,"filename":3557,"language":693,"meta":694,"style":694},"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",[696,3654,3655,3667,3676,3691,3712,3728,3744,3749,3758,3774,3791,3795,3811],{"__ignoreMap":694},[699,3656,3657,3659,3661,3663,3665],{"class":701,"line":702},[699,3658,986],{"class":705},[699,3660,710],{"class":709},[699,3662,991],{"class":713},[699,3664,717],{"class":705},[699,3666,1649],{"class":709},[699,3668,3669,3672,3674],{"class":701,"line":732},[699,3670,3671],{"class":756},"  cart",[699,3673,760],{"class":709},[699,3675,2096],{"class":709},[699,3677,3678,3681,3683,3685,3687,3689],{"class":701,"line":776},[699,3679,3680],{"class":756},"    id",[699,3682,760],{"class":709},[699,3684,1045],{"class":705},[699,3686,710],{"class":709},[699,3688,1678],{"class":705},[699,3690,3407],{"class":709},[699,3692,3693,3696,3698,3700,3702,3705,3707,3710],{"class":701,"line":816},[699,3694,3695],{"class":756},"    items",[699,3697,760],{"class":709},[699,3699,1045],{"class":705},[699,3701,710],{"class":709},[699,3703,3704],{"class":705},"items",[699,3706,710],{"class":709},[699,3708,3709],{"class":705},"length",[699,3711,3407],{"class":709},[699,3713,3714,3717,3719,3721,3723,3726],{"class":701,"line":836},[699,3715,3716],{"class":756},"    total",[699,3718,760],{"class":709},[699,3720,1045],{"class":705},[699,3722,710],{"class":709},[699,3724,3725],{"class":705},"total",[699,3727,3407],{"class":709},[699,3729,3730,3733,3735,3737,3740,3742],{"class":701,"line":856},[699,3731,3732],{"class":756},"    currency",[699,3734,760],{"class":709},[699,3736,803],{"class":709},[699,3738,3739],{"class":723},"USD",[699,3741,720],{"class":709},[699,3743,3407],{"class":709},[699,3745,3746],{"class":701,"line":1085},[699,3747,3748],{"class":709},"  },\n",[699,3750,3751,3754,3756],{"class":701,"line":1581},[699,3752,3753],{"class":756},"  shipping",[699,3755,760],{"class":709},[699,3757,2096],{"class":709},[699,3759,3760,3763,3765,3767,3770,3772],{"class":701,"line":1610},[699,3761,3762],{"class":756},"    method",[699,3764,760],{"class":709},[699,3766,803],{"class":709},[699,3768,3769],{"class":723},"express",[699,3771,720],{"class":709},[699,3773,3407],{"class":709},[699,3775,3776,3779,3781,3784,3786,3789],{"class":701,"line":1615},[699,3777,3778],{"class":756},"    country",[699,3780,760],{"class":709},[699,3782,3783],{"class":705}," address",[699,3785,710],{"class":709},[699,3787,3788],{"class":705},"country",[699,3790,3407],{"class":709},[699,3792,3793],{"class":701,"line":1629},[699,3794,3748],{"class":709},[699,3796,3797,3800,3802,3805,3807,3809],{"class":701,"line":1652},[699,3798,3799],{"class":756},"  coupon",[699,3801,760],{"class":709},[699,3803,3804],{"class":705}," appliedCoupon",[699,3806,3252],{"class":709},[699,3808,696],{"class":705},[699,3810,3407],{"class":709},[699,3812,3813,3815],{"class":701,"line":1712},[699,3814,771],{"class":709},[699,3816,729],{"class":705},[1429,3818,3820],{"id":3819},"outcome","Outcome",[613,3822,3823],{},"The result of the operation:",[923,3825,3826,3899],{},[688,3827,3830],{"className":690,"code":3828,"filename":3829,"language":693,"meta":694,"style":694},"log.set({\n  status: 200,\n  duration: Date.now() - startTime,\n  success: true,\n})\n","Success",[696,3831,3832,3844,3856,3882,3893],{"__ignoreMap":694},[699,3833,3834,3836,3838,3840,3842],{"class":701,"line":702},[699,3835,986],{"class":705},[699,3837,710],{"class":709},[699,3839,991],{"class":713},[699,3841,717],{"class":705},[699,3843,1649],{"class":709},[699,3845,3846,3849,3851,3854],{"class":701,"line":732},[699,3847,3848],{"class":756},"  status",[699,3850,760],{"class":709},[699,3852,3853],{"class":883}," 200",[699,3855,3407],{"class":709},[699,3857,3858,3861,3863,3866,3868,3871,3874,3877,3880],{"class":701,"line":776},[699,3859,3860],{"class":756},"  duration",[699,3862,760],{"class":709},[699,3864,3865],{"class":705}," Date",[699,3867,710],{"class":709},[699,3869,3870],{"class":713},"now",[699,3872,3873],{"class":705},"() ",[699,3875,3876],{"class":709},"-",[699,3878,3879],{"class":705}," startTime",[699,3881,3407],{"class":709},[699,3883,3884,3887,3889,3891],{"class":701,"line":816},[699,3885,3886],{"class":756},"  success",[699,3888,760],{"class":709},[699,3890,2220],{"class":2219},[699,3892,3407],{"class":709},[699,3894,3895,3897],{"class":701,"line":836},[699,3896,771],{"class":709},[699,3898,729],{"class":705},[688,3900,3903],{"className":690,"code":3901,"filename":3902,"language":693,"meta":694,"style":694},"log.set({\n  status: 500,\n  error: {\n    message: err.message,\n    code: err.code,\n    type: err.constructor.name,\n  },\n})\n","Error",[696,3904,3905,3917,3928,3937,3954,3969,3990,3994],{"__ignoreMap":694},[699,3906,3907,3909,3911,3913,3915],{"class":701,"line":702},[699,3908,986],{"class":705},[699,3910,710],{"class":709},[699,3912,991],{"class":713},[699,3914,717],{"class":705},[699,3916,1649],{"class":709},[699,3918,3919,3921,3923,3926],{"class":701,"line":732},[699,3920,3848],{"class":756},[699,3922,760],{"class":709},[699,3924,3925],{"class":883}," 500",[699,3927,3407],{"class":709},[699,3929,3930,3933,3935],{"class":701,"line":776},[699,3931,3932],{"class":756},"  error",[699,3934,760],{"class":709},[699,3936,2096],{"class":709},[699,3938,3939,3942,3944,3947,3949,3952],{"class":701,"line":816},[699,3940,3941],{"class":756},"    message",[699,3943,760],{"class":709},[699,3945,3946],{"class":705}," err",[699,3948,710],{"class":709},[699,3950,3951],{"class":705},"message",[699,3953,3407],{"class":709},[699,3955,3956,3959,3961,3963,3965,3967],{"class":701,"line":836},[699,3957,3958],{"class":756},"    code",[699,3960,760],{"class":709},[699,3962,3946],{"class":705},[699,3964,710],{"class":709},[699,3966,696],{"class":705},[699,3968,3407],{"class":709},[699,3970,3971,3974,3976,3978,3980,3983,3985,3988],{"class":701,"line":856},[699,3972,3973],{"class":756},"    type",[699,3975,760],{"class":709},[699,3977,3946],{"class":705},[699,3979,710],{"class":709},[699,3981,3982],{"class":705},"constructor",[699,3984,710],{"class":709},[699,3986,3987],{"class":705},"name",[699,3989,3407],{"class":709},[699,3991,3992],{"class":701,"line":1085},[699,3993,3748],{"class":709},[699,3995,3996,3998],{"class":701,"line":1581},[699,3997,771],{"class":709},[699,3999,729],{"class":705},[677,4001,565],{"id":4002},"best-practices",[1429,4004,4006],{"id":4005},"use-meaningful-keys","Use Meaningful Keys",[688,4008,4011],{"className":690,"code":4009,"filename":4010,"language":693,"meta":694,"style":694},"\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","services\u002Forders.ts",[696,4012,4013,4018,4050,4054,4059],{"__ignoreMap":694},[699,4014,4015],{"class":701,"line":702},[699,4016,4017],{"class":2227},"\u002F\u002F Avoid generic keys\n",[699,4019,4020,4022,4024,4026,4028,4030,4033,4035,4037,4039,4041,4044,4046,4048],{"class":701,"line":732},[699,4021,986],{"class":705},[699,4023,710],{"class":709},[699,4025,991],{"class":713},[699,4027,717],{"class":705},[699,4029,996],{"class":709},[699,4031,4032],{"class":756}," data",[699,4034,760],{"class":709},[699,4036,753],{"class":709},[699,4038,1005],{"class":756},[699,4040,760],{"class":709},[699,4042,4043],{"class":883}," 123",[699,4045,811],{"class":709},[699,4047,811],{"class":709},[699,4049,729],{"class":705},[699,4051,4052],{"class":701,"line":776},[699,4053,960],{"emptyLinePlaceholder":959},[699,4055,4056],{"class":701,"line":816},[699,4057,4058],{"class":2227},"\u002F\u002F Use specific, descriptive keys\n",[699,4060,4061,4063,4065,4067,4069,4071,4074,4076,4078,4080,4082,4084,4086,4088,4090,4092,4095,4097,4099,4101],{"class":701,"line":836},[699,4062,986],{"class":705},[699,4064,710],{"class":709},[699,4066,991],{"class":713},[699,4068,717],{"class":705},[699,4070,996],{"class":709},[699,4072,4073],{"class":756}," order",[699,4075,760],{"class":709},[699,4077,753],{"class":709},[699,4079,1005],{"class":756},[699,4081,760],{"class":709},[699,4083,4043],{"class":883},[699,4085,750],{"class":709},[699,4087,1119],{"class":756},[699,4089,760],{"class":709},[699,4091,803],{"class":709},[699,4093,4094],{"class":723},"pending",[699,4096,720],{"class":709},[699,4098,811],{"class":709},[699,4100,811],{"class":709},[699,4102,729],{"class":705},[1429,4104,4106],{"id":4105},"group-related-data","Group Related Data",[688,4108,4110],{"className":690,"code":4109,"filename":3557,"language":693,"meta":694,"style":694},"\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",[696,4111,4112,4117,4129,4139,4155,4167,4179,4185,4189,4194,4206,4236,4260],{"__ignoreMap":694},[699,4113,4114],{"class":701,"line":702},[699,4115,4116],{"class":2227},"\u002F\u002F Flat structure is hard to read\n",[699,4118,4119,4121,4123,4125,4127],{"class":701,"line":732},[699,4120,986],{"class":705},[699,4122,710],{"class":709},[699,4124,991],{"class":713},[699,4126,717],{"class":705},[699,4128,1649],{"class":709},[699,4130,4131,4133,4135,4137],{"class":701,"line":776},[699,4132,3576],{"class":756},[699,4134,760],{"class":709},[699,4136,1010],{"class":883},[699,4138,3407],{"class":709},[699,4140,4141,4144,4146,4148,4151,4153],{"class":701,"line":816},[699,4142,4143],{"class":756},"  userEmail",[699,4145,760],{"class":709},[699,4147,803],{"class":709},[699,4149,4150],{"class":723},"a@b.com",[699,4152,720],{"class":709},[699,4154,3407],{"class":709},[699,4156,4157,4160,4162,4165],{"class":701,"line":836},[699,4158,4159],{"class":756},"  cartId",[699,4161,760],{"class":709},[699,4163,4164],{"class":883}," 2",[699,4166,3407],{"class":709},[699,4168,4169,4172,4174,4177],{"class":701,"line":856},[699,4170,4171],{"class":756},"  cartTotal",[699,4173,760],{"class":709},[699,4175,4176],{"class":883}," 100",[699,4178,3407],{"class":709},[699,4180,4181,4183],{"class":701,"line":1085},[699,4182,771],{"class":709},[699,4184,729],{"class":705},[699,4186,4187],{"class":701,"line":1581},[699,4188,960],{"emptyLinePlaceholder":959},[699,4190,4191],{"class":701,"line":1610},[699,4192,4193],{"class":2227},"\u002F\u002F Grouped structure is clearer\n",[699,4195,4196,4198,4200,4202,4204],{"class":701,"line":1615},[699,4197,986],{"class":705},[699,4199,710],{"class":709},[699,4201,991],{"class":713},[699,4203,717],{"class":705},[699,4205,1649],{"class":709},[699,4207,4208,4211,4213,4215,4217,4219,4221,4223,4225,4227,4229,4231,4233],{"class":701,"line":1629},[699,4209,4210],{"class":756},"  user",[699,4212,760],{"class":709},[699,4214,753],{"class":709},[699,4216,1005],{"class":756},[699,4218,760],{"class":709},[699,4220,1010],{"class":883},[699,4222,750],{"class":709},[699,4224,1683],{"class":756},[699,4226,760],{"class":709},[699,4228,803],{"class":709},[699,4230,4150],{"class":723},[699,4232,720],{"class":709},[699,4234,4235],{"class":709}," },\n",[699,4237,4238,4240,4242,4244,4246,4248,4250,4252,4254,4256,4258],{"class":701,"line":1652},[699,4239,3671],{"class":756},[699,4241,760],{"class":709},[699,4243,753],{"class":709},[699,4245,1005],{"class":756},[699,4247,760],{"class":709},[699,4249,4164],{"class":883},[699,4251,750],{"class":709},[699,4253,1071],{"class":756},[699,4255,760],{"class":709},[699,4257,4176],{"class":883},[699,4259,4235],{"class":709},[699,4261,4262,4264],{"class":701,"line":1712},[699,4263,771],{"class":709},[699,4265,729],{"class":705},[1429,4267,4269],{"id":4268},"add-context-incrementally","Add Context Incrementally",[613,4271,4272,4273,4276],{},"Call ",[696,4274,4275],{},"log.set()"," as you gather information:",[923,4278,4279,4586],{},[688,4280,4282],{"className":690,"code":4281,"filename":928,"language":693,"meta":694,"style":694},"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",[696,4283,4284,4302,4306,4328,4344,4348,4367,4413,4417,4441,4491,4495,4515,4562,4566,4580],{"__ignoreMap":694},[699,4285,4286,4288,4290,4292,4294,4296,4298,4300],{"class":701,"line":702},[699,4287,936],{"class":935},[699,4289,753],{"class":709},[699,4291,941],{"class":705},[699,4293,811],{"class":709},[699,4295,946],{"class":935},[699,4297,803],{"class":709},[699,4299,951],{"class":723},[699,4301,954],{"class":709},[699,4303,4304],{"class":701,"line":732},[699,4305,960],{"emptyLinePlaceholder":959},[699,4307,4308,4310,4312,4314,4316,4318,4320,4322,4324,4326],{"class":701,"line":776},[699,4309,2070],{"class":935},[699,4311,2073],{"class":935},[699,4313,2076],{"class":713},[699,4315,717],{"class":705},[699,4317,2081],{"class":965},[699,4319,1635],{"class":709},[699,4321,2087],{"class":2086},[699,4323,2090],{"class":709},[699,4325,2093],{"class":965},[699,4327,2096],{"class":709},[699,4329,4330,4332,4334,4336,4338,4340,4342],{"class":701,"line":816},[699,4331,2101],{"class":965},[699,4333,2104],{"class":705},[699,4335,2107],{"class":709},[699,4337,941],{"class":713},[699,4339,717],{"class":756},[699,4341,2087],{"class":705},[699,4343,729],{"class":756},[699,4345,4346],{"class":701,"line":836},[699,4347,960],{"emptyLinePlaceholder":959},[699,4349,4350,4352,4354,4356,4358,4361,4363,4365],{"class":701,"line":856},[699,4351,2101],{"class":965},[699,4353,763],{"class":705},[699,4355,2107],{"class":709},[699,4357,1559],{"class":935},[699,4359,4360],{"class":713}," getUser",[699,4362,717],{"class":756},[699,4364,2087],{"class":705},[699,4366,729],{"class":756},[699,4368,4369,4371,4373,4375,4377,4379,4381,4383,4385,4387,4389,4391,4393,4395,4397,4399,4401,4403,4405,4407,4409,4411],{"class":701,"line":1085},[699,4370,2124],{"class":705},[699,4372,710],{"class":709},[699,4374,991],{"class":713},[699,4376,717],{"class":756},[699,4378,996],{"class":709},[699,4380,763],{"class":756},[699,4382,760],{"class":709},[699,4384,753],{"class":709},[699,4386,1005],{"class":756},[699,4388,760],{"class":709},[699,4390,763],{"class":705},[699,4392,710],{"class":709},[699,4394,1678],{"class":705},[699,4396,750],{"class":709},[699,4398,1015],{"class":756},[699,4400,760],{"class":709},[699,4402,763],{"class":705},[699,4404,710],{"class":709},[699,4406,1705],{"class":705},[699,4408,811],{"class":709},[699,4410,811],{"class":709},[699,4412,729],{"class":756},[699,4414,4415],{"class":701,"line":1581},[699,4416,960],{"emptyLinePlaceholder":959},[699,4418,4419,4421,4423,4425,4427,4430,4432,4435,4437,4439],{"class":701,"line":1610},[699,4420,2101],{"class":965},[699,4422,1045],{"class":705},[699,4424,2107],{"class":709},[699,4426,1559],{"class":935},[699,4428,4429],{"class":713}," getCart",[699,4431,717],{"class":756},[699,4433,4434],{"class":705},"user",[699,4436,710],{"class":709},[699,4438,1678],{"class":705},[699,4440,729],{"class":756},[699,4442,4443,4445,4447,4449,4451,4453,4455,4457,4459,4461,4463,4465,4467,4469,4471,4473,4475,4477,4479,4481,4483,4485,4487,4489],{"class":701,"line":1615},[699,4444,2124],{"class":705},[699,4446,710],{"class":709},[699,4448,991],{"class":713},[699,4450,717],{"class":756},[699,4452,996],{"class":709},[699,4454,1045],{"class":756},[699,4456,760],{"class":709},[699,4458,753],{"class":709},[699,4460,1061],{"class":756},[699,4462,760],{"class":709},[699,4464,1045],{"class":705},[699,4466,710],{"class":709},[699,4468,3704],{"class":705},[699,4470,710],{"class":709},[699,4472,3709],{"class":705},[699,4474,750],{"class":709},[699,4476,1071],{"class":756},[699,4478,760],{"class":709},[699,4480,1045],{"class":705},[699,4482,710],{"class":709},[699,4484,3725],{"class":705},[699,4486,811],{"class":709},[699,4488,811],{"class":709},[699,4490,729],{"class":756},[699,4492,4493],{"class":701,"line":1629},[699,4494,960],{"emptyLinePlaceholder":959},[699,4496,4497,4499,4501,4503,4505,4508,4510,4513],{"class":701,"line":1652},[699,4498,2101],{"class":965},[699,4500,1098],{"class":705},[699,4502,2107],{"class":709},[699,4504,1559],{"class":935},[699,4506,4507],{"class":713}," processPayment",[699,4509,717],{"class":756},[699,4511,4512],{"class":705},"cart",[699,4514,729],{"class":756},[699,4516,4517,4519,4521,4523,4525,4527,4529,4531,4533,4535,4537,4539,4541,4543,4545,4547,4549,4551,4553,4556,4558,4560],{"class":701,"line":1712},[699,4518,2124],{"class":705},[699,4520,710],{"class":709},[699,4522,991],{"class":713},[699,4524,717],{"class":756},[699,4526,996],{"class":709},[699,4528,1098],{"class":756},[699,4530,760],{"class":709},[699,4532,753],{"class":709},[699,4534,1105],{"class":756},[699,4536,760],{"class":709},[699,4538,1098],{"class":705},[699,4540,710],{"class":709},[699,4542,1792],{"class":705},[699,4544,750],{"class":709},[699,4546,1119],{"class":756},[699,4548,760],{"class":709},[699,4550,1098],{"class":705},[699,4552,710],{"class":709},[699,4554,4555],{"class":705},"status",[699,4557,811],{"class":709},[699,4559,811],{"class":709},[699,4561,729],{"class":756},[699,4563,4564],{"class":701,"line":1721},[699,4565,960],{"emptyLinePlaceholder":959},[699,4567,4568,4570,4572,4574,4576,4578],{"class":701,"line":1727},[699,4569,2209],{"class":935},[699,4571,753],{"class":709},[699,4573,2214],{"class":756},[699,4575,760],{"class":709},[699,4577,2220],{"class":2219},[699,4579,1358],{"class":709},[699,4581,4582,4584],{"class":701,"line":1732},[699,4583,771],{"class":709},[699,4585,729],{"class":705},[688,4587,4589],{"className":1308,"code":4588,"filename":1310,"language":1311,"meta":694,"style":694},"[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",[696,4590,4591,4606,4626,4642,4668],{"__ignoreMap":694},[699,4592,4593,4595,4597,4599,4601,4604],{"class":701,"line":702},[699,4594,1318],{"class":709},[699,4596,1321],{"class":705},[699,4598,1324],{"class":709},[699,4600,1327],{"class":705},[699,4602,4603],{"class":1330},"456ms",[699,4605,729],{"class":705},[699,4607,4608,4610,4612,4614,4616,4618,4620,4622,4624],{"class":701,"line":732},[699,4609,1338],{"class":1330},[699,4611,753],{"class":723},[699,4613,1343],{"class":723},[699,4615,1346],{"class":723},[699,4617,1349],{"class":723},[699,4619,803],{"class":709},[699,4621,1022],{"class":723},[699,4623,720],{"class":709},[699,4625,1358],{"class":723},[699,4627,4628,4630,4632,4634,4636,4638,4640],{"class":701,"line":776},[699,4629,1363],{"class":1330},[699,4631,753],{"class":723},[699,4633,1373],{"class":723},[699,4635,1376],{"class":723},[699,4637,1379],{"class":723},[699,4639,1076],{"class":883},[699,4641,1358],{"class":723},[699,4643,4644,4646,4648,4650,4652,4654,4656,4658,4660,4662,4664,4666],{"class":701,"line":816},[699,4645,1388],{"class":1330},[699,4647,753],{"class":723},[699,4649,1393],{"class":723},[699,4651,803],{"class":709},[699,4653,1112],{"class":723},[699,4655,720],{"class":709},[699,4657,750],{"class":723},[699,4659,1404],{"class":723},[699,4661,803],{"class":709},[699,4663,1126],{"class":723},[699,4665,720],{"class":709},[699,4667,1358],{"class":723},[699,4669,4670,4672],{"class":701,"line":836},[699,4671,1417],{"class":1330},[699,4673,1420],{"class":883},[1429,4675,4677],{"id":4676},"handle-errors-gracefully","Handle Errors Gracefully",[613,4679,4680],{},"When errors occur, the wide event still emits with error context:",[2037,4682,4683,4909,5133,5349,5558],{},[688,4684,4686],{"className":690,"code":4685,"filename":245,"language":693,"meta":928,"style":694},"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",[696,4687,4688,4706,4710,4732,4748,4752,4759,4779,4787,4805,4818,4827,4842,4857,4876,4881,4888,4896,4902],{"__ignoreMap":694},[699,4689,4690,4692,4694,4696,4698,4700,4702,4704],{"class":701,"line":702},[699,4691,936],{"class":935},[699,4693,753],{"class":709},[699,4695,941],{"class":705},[699,4697,811],{"class":709},[699,4699,946],{"class":935},[699,4701,803],{"class":709},[699,4703,951],{"class":723},[699,4705,954],{"class":709},[699,4707,4708],{"class":701,"line":732},[699,4709,960],{"emptyLinePlaceholder":959},[699,4711,4712,4714,4716,4718,4720,4722,4724,4726,4728,4730],{"class":701,"line":776},[699,4713,2070],{"class":935},[699,4715,2073],{"class":935},[699,4717,2076],{"class":713},[699,4719,717],{"class":705},[699,4721,2081],{"class":965},[699,4723,1635],{"class":709},[699,4725,2087],{"class":2086},[699,4727,2090],{"class":709},[699,4729,2093],{"class":965},[699,4731,2096],{"class":709},[699,4733,4734,4736,4738,4740,4742,4744,4746],{"class":701,"line":816},[699,4735,2101],{"class":965},[699,4737,2104],{"class":705},[699,4739,2107],{"class":709},[699,4741,941],{"class":713},[699,4743,717],{"class":756},[699,4745,2087],{"class":705},[699,4747,729],{"class":756},[699,4749,4750],{"class":701,"line":836},[699,4751,960],{"emptyLinePlaceholder":959},[699,4753,4754,4757],{"class":701,"line":856},[699,4755,4756],{"class":935},"  try",[699,4758,2096],{"class":709},[699,4760,4761,4764,4767,4769,4771,4773,4775,4777],{"class":701,"line":1085},[699,4762,4763],{"class":965},"    const",[699,4765,4766],{"class":705}," result",[699,4768,2107],{"class":709},[699,4770,1559],{"class":935},[699,4772,4507],{"class":713},[699,4774,717],{"class":756},[699,4776,4512],{"class":705},[699,4778,729],{"class":756},[699,4780,4781,4784],{"class":701,"line":1581},[699,4782,4783],{"class":935},"    return",[699,4785,4786],{"class":705}," result\n",[699,4788,4789,4792,4795,4797,4800,4803],{"class":701,"line":1610},[699,4790,4791],{"class":709},"  }",[699,4793,4794],{"class":935}," catch",[699,4796,1635],{"class":756},[699,4798,4799],{"class":705},"err",[699,4801,4802],{"class":756},") ",[699,4804,1649],{"class":709},[699,4806,4807,4810,4812,4814,4816],{"class":701,"line":1615},[699,4808,4809],{"class":705},"    log",[699,4811,710],{"class":709},[699,4813,991],{"class":713},[699,4815,717],{"class":756},[699,4817,1649],{"class":709},[699,4819,4820,4823,4825],{"class":701,"line":1629},[699,4821,4822],{"class":756},"      error",[699,4824,760],{"class":709},[699,4826,2096],{"class":709},[699,4828,4829,4832,4834,4836,4838,4840],{"class":701,"line":1652},[699,4830,4831],{"class":756},"        message",[699,4833,760],{"class":709},[699,4835,3946],{"class":705},[699,4837,710],{"class":709},[699,4839,3951],{"class":705},[699,4841,3407],{"class":709},[699,4843,4844,4847,4849,4851,4853,4855],{"class":701,"line":1712},[699,4845,4846],{"class":756},"        code",[699,4848,760],{"class":709},[699,4850,3946],{"class":705},[699,4852,710],{"class":709},[699,4854,696],{"class":705},[699,4856,3407],{"class":709},[699,4858,4859,4862,4864,4866,4868,4870,4872,4874],{"class":701,"line":1721},[699,4860,4861],{"class":756},"        type",[699,4863,760],{"class":709},[699,4865,3946],{"class":705},[699,4867,710],{"class":709},[699,4869,3982],{"class":705},[699,4871,710],{"class":709},[699,4873,3987],{"class":705},[699,4875,3407],{"class":709},[699,4877,4878],{"class":701,"line":1727},[699,4879,4880],{"class":709},"      },\n",[699,4882,4883,4886],{"class":701,"line":1732},[699,4884,4885],{"class":709},"    }",[699,4887,729],{"class":756},[699,4889,4890,4893],{"class":701,"line":1765},[699,4891,4892],{"class":935},"    throw",[699,4894,4895],{"class":705}," err\n",[699,4897,4899],{"class":701,"line":4898},18,[699,4900,4901],{"class":709},"  }\n",[699,4903,4905,4907],{"class":701,"line":4904},19,[699,4906,771],{"class":709},[699,4908,729],{"class":705},[688,4910,4912],{"className":690,"code":4911,"filename":260,"language":693,"meta":2238,"style":694},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger } from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineHandler(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",[696,4913,4914,4932,4950,4954,4976,4992,4996,5002,5020,5026,5040,5052,5060,5074,5088,5106,5110,5116,5122,5126],{"__ignoreMap":694},[699,4915,4916,4918,4920,4922,4924,4926,4928,4930],{"class":701,"line":702},[699,4917,936],{"class":935},[699,4919,753],{"class":709},[699,4921,2249],{"class":705},[699,4923,811],{"class":709},[699,4925,946],{"class":935},[699,4927,803],{"class":709},[699,4929,2258],{"class":723},[699,4931,954],{"class":709},[699,4933,4934,4936,4938,4940,4942,4944,4946,4948],{"class":701,"line":732},[699,4935,936],{"class":935},[699,4937,753],{"class":709},[699,4939,941],{"class":705},[699,4941,811],{"class":709},[699,4943,946],{"class":935},[699,4945,803],{"class":709},[699,4947,2277],{"class":723},[699,4949,954],{"class":709},[699,4951,4952],{"class":701,"line":776},[699,4953,960],{"emptyLinePlaceholder":959},[699,4955,4956,4958,4960,4962,4964,4966,4968,4970,4972,4974],{"class":701,"line":816},[699,4957,2070],{"class":935},[699,4959,2073],{"class":935},[699,4961,2249],{"class":713},[699,4963,717],{"class":705},[699,4965,2081],{"class":965},[699,4967,1635],{"class":709},[699,4969,2087],{"class":2086},[699,4971,2090],{"class":709},[699,4973,2093],{"class":965},[699,4975,2096],{"class":709},[699,4977,4978,4980,4982,4984,4986,4988,4990],{"class":701,"line":836},[699,4979,2101],{"class":965},[699,4981,2104],{"class":705},[699,4983,2107],{"class":709},[699,4985,941],{"class":713},[699,4987,717],{"class":756},[699,4989,2087],{"class":705},[699,4991,729],{"class":756},[699,4993,4994],{"class":701,"line":856},[699,4995,960],{"emptyLinePlaceholder":959},[699,4997,4998,5000],{"class":701,"line":1085},[699,4999,4756],{"class":935},[699,5001,2096],{"class":709},[699,5003,5004,5006,5008,5010,5012,5014,5016,5018],{"class":701,"line":1581},[699,5005,4763],{"class":965},[699,5007,4766],{"class":705},[699,5009,2107],{"class":709},[699,5011,1559],{"class":935},[699,5013,4507],{"class":713},[699,5015,717],{"class":756},[699,5017,4512],{"class":705},[699,5019,729],{"class":756},[699,5021,5022,5024],{"class":701,"line":1610},[699,5023,4783],{"class":935},[699,5025,4786],{"class":705},[699,5027,5028,5030,5032,5034,5036,5038],{"class":701,"line":1615},[699,5029,4791],{"class":709},[699,5031,4794],{"class":935},[699,5033,1635],{"class":756},[699,5035,4799],{"class":705},[699,5037,4802],{"class":756},[699,5039,1649],{"class":709},[699,5041,5042,5044,5046,5048,5050],{"class":701,"line":1629},[699,5043,4809],{"class":705},[699,5045,710],{"class":709},[699,5047,991],{"class":713},[699,5049,717],{"class":756},[699,5051,1649],{"class":709},[699,5053,5054,5056,5058],{"class":701,"line":1652},[699,5055,4822],{"class":756},[699,5057,760],{"class":709},[699,5059,2096],{"class":709},[699,5061,5062,5064,5066,5068,5070,5072],{"class":701,"line":1712},[699,5063,4831],{"class":756},[699,5065,760],{"class":709},[699,5067,3946],{"class":705},[699,5069,710],{"class":709},[699,5071,3951],{"class":705},[699,5073,3407],{"class":709},[699,5075,5076,5078,5080,5082,5084,5086],{"class":701,"line":1721},[699,5077,4846],{"class":756},[699,5079,760],{"class":709},[699,5081,3946],{"class":705},[699,5083,710],{"class":709},[699,5085,696],{"class":705},[699,5087,3407],{"class":709},[699,5089,5090,5092,5094,5096,5098,5100,5102,5104],{"class":701,"line":1727},[699,5091,4861],{"class":756},[699,5093,760],{"class":709},[699,5095,3946],{"class":705},[699,5097,710],{"class":709},[699,5099,3982],{"class":705},[699,5101,710],{"class":709},[699,5103,3987],{"class":705},[699,5105,3407],{"class":709},[699,5107,5108],{"class":701,"line":1732},[699,5109,4880],{"class":709},[699,5111,5112,5114],{"class":701,"line":1765},[699,5113,4885],{"class":709},[699,5115,729],{"class":756},[699,5117,5118,5120],{"class":701,"line":4898},[699,5119,4892],{"class":935},[699,5121,4895],{"class":705},[699,5123,5124],{"class":701,"line":4904},[699,5125,4901],{"class":709},[699,5127,5129,5131],{"class":701,"line":5128},20,[699,5130,771],{"class":709},[699,5132,729],{"class":705},[688,5134,5136],{"className":690,"code":5135,"filename":250,"language":693,"meta":2437,"style":694},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async () => {\n  const log = useLogger()\n\n  try {\n    const result = await processPayment(cart)\n    return Response.json(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",[696,5137,5138,5160,5164,5186,5198,5202,5208,5226,5243,5257,5269,5277,5291,5305,5323,5327,5333,5339,5343],{"__ignoreMap":694},[699,5139,5140,5142,5144,5146,5148,5150,5152,5154,5156,5158],{"class":701,"line":702},[699,5141,936],{"class":935},[699,5143,753],{"class":709},[699,5145,2448],{"class":705},[699,5147,750],{"class":709},[699,5149,941],{"class":705},[699,5151,811],{"class":709},[699,5153,946],{"class":935},[699,5155,803],{"class":709},[699,5157,2461],{"class":723},[699,5159,954],{"class":709},[699,5161,5162],{"class":701,"line":732},[699,5163,960],{"emptyLinePlaceholder":959},[699,5165,5166,5168,5170,5172,5174,5176,5178,5180,5182,5184],{"class":701,"line":776},[699,5167,2070],{"class":935},[699,5169,2474],{"class":965},[699,5171,2477],{"class":705},[699,5173,972],{"class":709},[699,5175,2448],{"class":713},[699,5177,717],{"class":705},[699,5179,2081],{"class":965},[699,5181,2488],{"class":709},[699,5183,2093],{"class":965},[699,5185,2096],{"class":709},[699,5187,5188,5190,5192,5194,5196],{"class":701,"line":816},[699,5189,2101],{"class":965},[699,5191,2104],{"class":705},[699,5193,2107],{"class":709},[699,5195,941],{"class":713},[699,5197,1305],{"class":756},[699,5199,5200],{"class":701,"line":836},[699,5201,960],{"emptyLinePlaceholder":959},[699,5203,5204,5206],{"class":701,"line":856},[699,5205,4756],{"class":935},[699,5207,2096],{"class":709},[699,5209,5210,5212,5214,5216,5218,5220,5222,5224],{"class":701,"line":1085},[699,5211,4763],{"class":965},[699,5213,4766],{"class":705},[699,5215,2107],{"class":709},[699,5217,1559],{"class":935},[699,5219,4507],{"class":713},[699,5221,717],{"class":756},[699,5223,4512],{"class":705},[699,5225,729],{"class":756},[699,5227,5228,5230,5232,5234,5236,5238,5241],{"class":701,"line":1581},[699,5229,4783],{"class":935},[699,5231,2599],{"class":705},[699,5233,710],{"class":709},[699,5235,2604],{"class":713},[699,5237,717],{"class":756},[699,5239,5240],{"class":705},"result",[699,5242,729],{"class":756},[699,5244,5245,5247,5249,5251,5253,5255],{"class":701,"line":1610},[699,5246,4791],{"class":709},[699,5248,4794],{"class":935},[699,5250,1635],{"class":756},[699,5252,4799],{"class":705},[699,5254,4802],{"class":756},[699,5256,1649],{"class":709},[699,5258,5259,5261,5263,5265,5267],{"class":701,"line":1615},[699,5260,4809],{"class":705},[699,5262,710],{"class":709},[699,5264,991],{"class":713},[699,5266,717],{"class":756},[699,5268,1649],{"class":709},[699,5270,5271,5273,5275],{"class":701,"line":1629},[699,5272,4822],{"class":756},[699,5274,760],{"class":709},[699,5276,2096],{"class":709},[699,5278,5279,5281,5283,5285,5287,5289],{"class":701,"line":1652},[699,5280,4831],{"class":756},[699,5282,760],{"class":709},[699,5284,3946],{"class":705},[699,5286,710],{"class":709},[699,5288,3951],{"class":705},[699,5290,3407],{"class":709},[699,5292,5293,5295,5297,5299,5301,5303],{"class":701,"line":1712},[699,5294,4846],{"class":756},[699,5296,760],{"class":709},[699,5298,3946],{"class":705},[699,5300,710],{"class":709},[699,5302,696],{"class":705},[699,5304,3407],{"class":709},[699,5306,5307,5309,5311,5313,5315,5317,5319,5321],{"class":701,"line":1721},[699,5308,4861],{"class":756},[699,5310,760],{"class":709},[699,5312,3946],{"class":705},[699,5314,710],{"class":709},[699,5316,3982],{"class":705},[699,5318,710],{"class":709},[699,5320,3987],{"class":705},[699,5322,3407],{"class":709},[699,5324,5325],{"class":701,"line":1727},[699,5326,4880],{"class":709},[699,5328,5329,5331],{"class":701,"line":1732},[699,5330,4885],{"class":709},[699,5332,729],{"class":756},[699,5334,5335,5337],{"class":701,"line":1765},[699,5336,4892],{"class":935},[699,5338,4895],{"class":705},[699,5340,5341],{"class":701,"line":4898},[699,5342,4901],{"class":709},[699,5344,5345,5347],{"class":701,"line":4904},[699,5346,771],{"class":709},[699,5348,729],{"class":705},[688,5350,5352],{"className":690,"code":5351,"filename":280,"language":693,"meta":2632,"style":694},"app.post('\u002Fapi\u002Fcheckout', async (c) => {\n  const log = c.get('log')\n\n  try {\n    const result = await processPayment(cart)\n    return c.json(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",[696,5353,5354,5384,5408,5412,5418,5436,5452,5466,5478,5486,5500,5514,5532,5536,5542,5548,5552],{"__ignoreMap":694},[699,5355,5356,5358,5360,5362,5364,5366,5368,5370,5372,5374,5376,5378,5380,5382],{"class":701,"line":702},[699,5357,2639],{"class":705},[699,5359,710],{"class":709},[699,5361,2644],{"class":713},[699,5363,717],{"class":705},[699,5365,720],{"class":709},[699,5367,1905],{"class":723},[699,5369,720],{"class":709},[699,5371,750],{"class":709},[699,5373,2657],{"class":965},[699,5375,1635],{"class":709},[699,5377,2662],{"class":2086},[699,5379,2090],{"class":709},[699,5381,2093],{"class":965},[699,5383,2096],{"class":709},[699,5385,5386,5388,5390,5392,5394,5396,5398,5400,5402,5404,5406],{"class":701,"line":732},[699,5387,2101],{"class":965},[699,5389,2104],{"class":705},[699,5391,2107],{"class":709},[699,5393,2679],{"class":705},[699,5395,710],{"class":709},[699,5397,2684],{"class":713},[699,5399,717],{"class":756},[699,5401,720],{"class":709},[699,5403,986],{"class":723},[699,5405,720],{"class":709},[699,5407,729],{"class":756},[699,5409,5410],{"class":701,"line":776},[699,5411,960],{"emptyLinePlaceholder":959},[699,5413,5414,5416],{"class":701,"line":816},[699,5415,4756],{"class":935},[699,5417,2096],{"class":709},[699,5419,5420,5422,5424,5426,5428,5430,5432,5434],{"class":701,"line":836},[699,5421,4763],{"class":965},[699,5423,4766],{"class":705},[699,5425,2107],{"class":709},[699,5427,1559],{"class":935},[699,5429,4507],{"class":713},[699,5431,717],{"class":756},[699,5433,4512],{"class":705},[699,5435,729],{"class":756},[699,5437,5438,5440,5442,5444,5446,5448,5450],{"class":701,"line":856},[699,5439,4783],{"class":935},[699,5441,2679],{"class":705},[699,5443,710],{"class":709},[699,5445,2604],{"class":713},[699,5447,717],{"class":756},[699,5449,5240],{"class":705},[699,5451,729],{"class":756},[699,5453,5454,5456,5458,5460,5462,5464],{"class":701,"line":1085},[699,5455,4791],{"class":709},[699,5457,4794],{"class":935},[699,5459,1635],{"class":756},[699,5461,4799],{"class":705},[699,5463,4802],{"class":756},[699,5465,1649],{"class":709},[699,5467,5468,5470,5472,5474,5476],{"class":701,"line":1581},[699,5469,4809],{"class":705},[699,5471,710],{"class":709},[699,5473,991],{"class":713},[699,5475,717],{"class":756},[699,5477,1649],{"class":709},[699,5479,5480,5482,5484],{"class":701,"line":1610},[699,5481,4822],{"class":756},[699,5483,760],{"class":709},[699,5485,2096],{"class":709},[699,5487,5488,5490,5492,5494,5496,5498],{"class":701,"line":1615},[699,5489,4831],{"class":756},[699,5491,760],{"class":709},[699,5493,3946],{"class":705},[699,5495,710],{"class":709},[699,5497,3951],{"class":705},[699,5499,3407],{"class":709},[699,5501,5502,5504,5506,5508,5510,5512],{"class":701,"line":1629},[699,5503,4846],{"class":756},[699,5505,760],{"class":709},[699,5507,3946],{"class":705},[699,5509,710],{"class":709},[699,5511,696],{"class":705},[699,5513,3407],{"class":709},[699,5515,5516,5518,5520,5522,5524,5526,5528,5530],{"class":701,"line":1652},[699,5517,4861],{"class":756},[699,5519,760],{"class":709},[699,5521,3946],{"class":705},[699,5523,710],{"class":709},[699,5525,3982],{"class":705},[699,5527,710],{"class":709},[699,5529,3987],{"class":705},[699,5531,3407],{"class":709},[699,5533,5534],{"class":701,"line":1712},[699,5535,4880],{"class":709},[699,5537,5538,5540],{"class":701,"line":1721},[699,5539,4885],{"class":709},[699,5541,729],{"class":756},[699,5543,5544,5546],{"class":701,"line":1727},[699,5545,4892],{"class":935},[699,5547,4895],{"class":705},[699,5549,5550],{"class":701,"line":1732},[699,5551,4901],{"class":709},[699,5553,5554,5556],{"class":701,"line":1765},[699,5555,771],{"class":709},[699,5557,729],{"class":705},[688,5559,5561],{"className":690,"code":5560,"filename":275,"language":693,"meta":2632,"style":694},"app.post('\u002Fapi\u002Fcheckout', async (req, res) => {\n  const log = req.log\n\n  try {\n    const result = await processPayment(cart)\n    return res.json(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",[696,5562,5563,5597,5611,5615,5621,5639,5655,5669,5681,5689,5703,5717,5735,5739,5745,5751,5755],{"__ignoreMap":694},[699,5564,5565,5567,5569,5571,5573,5575,5577,5579,5581,5583,5585,5587,5589,5591,5593,5595],{"class":701,"line":702},[699,5566,2639],{"class":705},[699,5568,710],{"class":709},[699,5570,2644],{"class":713},[699,5572,717],{"class":705},[699,5574,720],{"class":709},[699,5576,1905],{"class":723},[699,5578,720],{"class":709},[699,5580,750],{"class":709},[699,5582,2657],{"class":965},[699,5584,1635],{"class":709},[699,5586,2846],{"class":2086},[699,5588,750],{"class":709},[699,5590,2851],{"class":2086},[699,5592,2090],{"class":709},[699,5594,2093],{"class":965},[699,5596,2096],{"class":709},[699,5598,5599,5601,5603,5605,5607,5609],{"class":701,"line":732},[699,5600,2101],{"class":965},[699,5602,2104],{"class":705},[699,5604,2107],{"class":709},[699,5606,2868],{"class":705},[699,5608,710],{"class":709},[699,5610,2873],{"class":705},[699,5612,5613],{"class":701,"line":776},[699,5614,960],{"emptyLinePlaceholder":959},[699,5616,5617,5619],{"class":701,"line":816},[699,5618,4756],{"class":935},[699,5620,2096],{"class":709},[699,5622,5623,5625,5627,5629,5631,5633,5635,5637],{"class":701,"line":836},[699,5624,4763],{"class":965},[699,5626,4766],{"class":705},[699,5628,2107],{"class":709},[699,5630,1559],{"class":935},[699,5632,4507],{"class":713},[699,5634,717],{"class":756},[699,5636,4512],{"class":705},[699,5638,729],{"class":756},[699,5640,5641,5643,5645,5647,5649,5651,5653],{"class":701,"line":856},[699,5642,4783],{"class":935},[699,5644,2851],{"class":705},[699,5646,710],{"class":709},[699,5648,2604],{"class":713},[699,5650,717],{"class":756},[699,5652,5240],{"class":705},[699,5654,729],{"class":756},[699,5656,5657,5659,5661,5663,5665,5667],{"class":701,"line":1085},[699,5658,4791],{"class":709},[699,5660,4794],{"class":935},[699,5662,1635],{"class":756},[699,5664,4799],{"class":705},[699,5666,4802],{"class":756},[699,5668,1649],{"class":709},[699,5670,5671,5673,5675,5677,5679],{"class":701,"line":1581},[699,5672,4809],{"class":705},[699,5674,710],{"class":709},[699,5676,991],{"class":713},[699,5678,717],{"class":756},[699,5680,1649],{"class":709},[699,5682,5683,5685,5687],{"class":701,"line":1610},[699,5684,4822],{"class":756},[699,5686,760],{"class":709},[699,5688,2096],{"class":709},[699,5690,5691,5693,5695,5697,5699,5701],{"class":701,"line":1615},[699,5692,4831],{"class":756},[699,5694,760],{"class":709},[699,5696,3946],{"class":705},[699,5698,710],{"class":709},[699,5700,3951],{"class":705},[699,5702,3407],{"class":709},[699,5704,5705,5707,5709,5711,5713,5715],{"class":701,"line":1629},[699,5706,4846],{"class":756},[699,5708,760],{"class":709},[699,5710,3946],{"class":705},[699,5712,710],{"class":709},[699,5714,696],{"class":705},[699,5716,3407],{"class":709},[699,5718,5719,5721,5723,5725,5727,5729,5731,5733],{"class":701,"line":1652},[699,5720,4861],{"class":756},[699,5722,760],{"class":709},[699,5724,3946],{"class":705},[699,5726,710],{"class":709},[699,5728,3982],{"class":705},[699,5730,710],{"class":709},[699,5732,3987],{"class":705},[699,5734,3407],{"class":709},[699,5736,5737],{"class":701,"line":1712},[699,5738,4880],{"class":709},[699,5740,5741,5743],{"class":701,"line":1721},[699,5742,4885],{"class":709},[699,5744,729],{"class":756},[699,5746,5747,5749],{"class":701,"line":1727},[699,5748,4892],{"class":935},[699,5750,4895],{"class":705},[699,5752,5753],{"class":701,"line":1732},[699,5754,4901],{"class":709},[699,5756,5757,5759],{"class":701,"line":1765},[699,5758,771],{"class":709},[699,5760,729],{"class":705},[688,5762,5764],{"className":1308,"code":5763,"filename":1310,"language":1311,"meta":694,"style":694},"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",[696,5765,5766,5774,5788,5799,5822,5841,5868,5892,5908],{"__ignoreMap":694},[699,5767,5768,5771],{"class":701,"line":702},[699,5769,5770],{"class":1330},"ERROR",[699,5772,5773],{"class":705}," [checkout] POST \u002Fapi\u002Fcheckout 402 in 123ms\n",[699,5775,5776,5779,5782,5785],{"class":701,"line":732},[699,5777,5778],{"class":1330},"  ├─",[699,5780,5781],{"class":723}," error:",[699,5783,5784],{"class":723}," Card",[699,5786,5787],{"class":723}," declined\n",[699,5789,5790,5793,5796],{"class":701,"line":776},[699,5791,5792],{"class":1330},"  │",[699,5794,5795],{"class":723},"     at",[699,5797,5798],{"class":723}," server\u002Fapi\u002Fcheckout.post.ts:42\n",[699,5800,5801,5803,5806,5808,5811,5814,5817,5819],{"class":701,"line":816},[699,5802,5792],{"class":1330},[699,5804,5805],{"class":723},"   ❯",[699,5807,1056],{"class":883},[699,5809,5810],{"class":723}," ┃",[699,5812,5813],{"class":723}," throw",[699,5815,5816],{"class":723}," createError",[699,5818,717],{"class":709},[699,5820,5821],{"class":705},"{ code: 'CARD_DECLINED', ... })\n",[699,5823,5824,5826,5829,5832,5835,5838],{"class":701,"line":836},[699,5825,5792],{"class":1330},[699,5827,5828],{"class":723},"     Why:",[699,5830,5831],{"class":723}," Issuer",[699,5833,5834],{"class":723}," declined",[699,5836,5837],{"class":723}," the",[699,5839,5840],{"class":723}," charge\n",[699,5842,5843,5845,5848,5851,5853,5856,5859,5862,5865],{"class":701,"line":856},[699,5844,5792],{"class":1330},[699,5846,5847],{"class":723},"     Fix:",[699,5849,5850],{"class":723}," Ask",[699,5852,5837],{"class":723},[699,5854,5855],{"class":723}," customer",[699,5857,5858],{"class":723}," to",[699,5860,5861],{"class":723}," use",[699,5863,5864],{"class":723}," another",[699,5866,5867],{"class":723}," card\n",[699,5869,5870,5872,5875,5878,5881,5884,5887,5890],{"class":701,"line":1085},[699,5871,5792],{"class":1330},[699,5873,5874],{"class":723},"     stack",[699,5876,5877],{"class":705}," (3 ",[699,5879,5880],{"class":723},"frames",[699,5882,5883],{"class":723}," hidden",[699,5885,5886],{"class":723}," in",[699,5888,5889],{"class":723}," node_modules",[699,5891,729],{"class":709},[699,5893,5894,5896,5899,5902,5905],{"class":701,"line":1581},[699,5895,5778],{"class":1330},[699,5897,5898],{"class":723}," user:",[699,5900,5901],{"class":723}," id=",[699,5903,5904],{"class":883},"1",[699,5906,5907],{"class":723}," plan=pro\n",[699,5909,5910,5913,5916,5919,5922,5925],{"class":701,"line":1610},[699,5911,5912],{"class":1330},"  └─",[699,5914,5915],{"class":723}," cart:",[699,5917,5918],{"class":723}," items=",[699,5920,5921],{"class":883},"3",[699,5923,5924],{"class":723}," total=",[699,5926,5927],{"class":883},"9999\n",[1429,5929,5931],{"id":5930},"setting-the-level-manually","Setting the Level Manually",[613,5933,5934,5937,5938,5940,5941,5944,5945,5948,5949,5951,5952,5955],{},[696,5935,5936],{},"log.error(err)"," populates the ",[696,5939,3026],{}," field with ",[696,5942,5943],{},"{ name, message, stack }"," and promotes the wide event to ",[696,5946,5947],{},"level: 'error'",". When you want to control the ",[696,5950,3026],{}," field yourself (typed error codes, no stack, or richer custom shapes), use ",[696,5953,5954],{},"log.setLevel()"," to promote the level without touching the context:",[688,5957,5959],{"className":690,"code":5958,"language":693,"meta":694,"style":694},"log.setLevel('error')\nlog.set({\n  error: {\n    code: 'PAYMENT_DECLINED',\n    reason: 'insufficient_funds',\n  },\n})\n",[696,5960,5961,5980,5992,6000,6015,6031,6035],{"__ignoreMap":694},[699,5962,5963,5965,5967,5970,5972,5974,5976,5978],{"class":701,"line":702},[699,5964,986],{"class":705},[699,5966,710],{"class":709},[699,5968,5969],{"class":713},"setLevel",[699,5971,717],{"class":705},[699,5973,720],{"class":709},[699,5975,3026],{"class":723},[699,5977,720],{"class":709},[699,5979,729],{"class":705},[699,5981,5982,5984,5986,5988,5990],{"class":701,"line":732},[699,5983,986],{"class":705},[699,5985,710],{"class":709},[699,5987,991],{"class":713},[699,5989,717],{"class":705},[699,5991,1649],{"class":709},[699,5993,5994,5996,5998],{"class":701,"line":776},[699,5995,3932],{"class":756},[699,5997,760],{"class":709},[699,5999,2096],{"class":709},[699,6001,6002,6004,6006,6008,6011,6013],{"class":701,"line":816},[699,6003,3958],{"class":756},[699,6005,760],{"class":709},[699,6007,803],{"class":709},[699,6009,6010],{"class":723},"PAYMENT_DECLINED",[699,6012,720],{"class":709},[699,6014,3407],{"class":709},[699,6016,6017,6020,6022,6024,6027,6029],{"class":701,"line":836},[699,6018,6019],{"class":756},"    reason",[699,6021,760],{"class":709},[699,6023,803],{"class":709},[699,6025,6026],{"class":723},"insufficient_funds",[699,6028,720],{"class":709},[699,6030,3407],{"class":709},[699,6032,6033],{"class":701,"line":856},[699,6034,3748],{"class":709},[699,6036,6037,6039],{"class":701,"line":1085},[699,6038,771],{"class":709},[699,6040,729],{"class":705},[613,6042,6043,6046,6047,6050,6051,6054,6055,6058,6059,6061],{},[696,6044,6045],{},"setLevel()"," accepts ",[696,6048,6049],{},"'error' | 'warn' | 'info' | 'debug'"," and wins over the level computed from ",[696,6052,6053],{},".error()"," \u002F ",[696,6056,6057],{},".warn()",". Combine it with ",[696,6060,4275],{}," to keep the wide event tidy while still routing through error-level sampling and drains.",[677,6063,6065],{"id":6064},"choose-how-the-event-is-rendered","Choose how the event is rendered",[613,6067,6068],{},"evlog automatically switches between formats based on environment: pretty in development, JSON in production. This is the default behavior, no configuration needed.",[923,6070,6071,6153],{},[688,6072,6075],{"className":1308,"code":6073,"filename":6074,"language":1311,"meta":694,"style":694},"[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)",[696,6076,6077,6091,6111,6127],{"__ignoreMap":694},[699,6078,6079,6081,6083,6085,6087,6089],{"class":701,"line":702},[699,6080,1318],{"class":709},[699,6082,1321],{"class":705},[699,6084,1324],{"class":709},[699,6086,1327],{"class":705},[699,6088,1331],{"class":1330},[699,6090,729],{"class":705},[699,6092,6093,6095,6097,6099,6101,6103,6105,6107,6109],{"class":701,"line":732},[699,6094,1338],{"class":1330},[699,6096,753],{"class":723},[699,6098,1343],{"class":723},[699,6100,1346],{"class":723},[699,6102,1349],{"class":723},[699,6104,803],{"class":709},[699,6106,1022],{"class":723},[699,6108,720],{"class":709},[699,6110,1358],{"class":723},[699,6112,6113,6115,6117,6119,6121,6123,6125],{"class":701,"line":776},[699,6114,1363],{"class":1330},[699,6116,753],{"class":723},[699,6118,1373],{"class":723},[699,6120,1376],{"class":723},[699,6122,1379],{"class":723},[699,6124,1076],{"class":883},[699,6126,1358],{"class":723},[699,6128,6129,6131,6133,6135,6137,6139,6141,6143,6145,6147,6149,6151],{"class":701,"line":816},[699,6130,1388],{"class":1330},[699,6132,753],{"class":723},[699,6134,1393],{"class":723},[699,6136,803],{"class":709},[699,6138,1112],{"class":723},[699,6140,720],{"class":709},[699,6142,750],{"class":723},[699,6144,1404],{"class":723},[699,6146,803],{"class":709},[699,6148,1126],{"class":723},[699,6150,720],{"class":709},[699,6152,1358],{"class":723},[688,6154,6158],{"className":6155,"code":6156,"filename":6157,"language":2604,"meta":694,"style":694},"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)",[696,6159,6160,6164,6186,6204,6222,6237,6277,6313,6358],{"__ignoreMap":694},[699,6161,6162],{"class":701,"line":702},[699,6163,1649],{"class":709},[699,6165,6166,6169,6172,6175,6177,6180,6182,6184],{"class":701,"line":732},[699,6167,6168],{"class":709},"  \"",[699,6170,6171],{"class":965},"level",[699,6173,6174],{"class":709},"\"",[699,6176,760],{"class":709},[699,6178,6179],{"class":709}," \"",[699,6181,714],{"class":723},[699,6183,6174],{"class":709},[699,6185,3407],{"class":709},[699,6187,6188,6190,6192,6194,6196,6198,6200,6202],{"class":701,"line":776},[699,6189,6168],{"class":709},[699,6191,1792],{"class":965},[699,6193,6174],{"class":709},[699,6195,760],{"class":709},[699,6197,6179],{"class":709},[699,6199,1891],{"class":723},[699,6201,6174],{"class":709},[699,6203,3407],{"class":709},[699,6205,6206,6208,6210,6212,6214,6216,6218,6220],{"class":701,"line":816},[699,6207,6168],{"class":709},[699,6209,1796],{"class":965},[699,6211,6174],{"class":709},[699,6213,760],{"class":709},[699,6215,6179],{"class":709},[699,6217,1905],{"class":723},[699,6219,6174],{"class":709},[699,6221,3407],{"class":709},[699,6223,6224,6226,6229,6231,6233,6235],{"class":701,"line":836},[699,6225,6168],{"class":709},[699,6227,6228],{"class":965},"duration",[699,6230,6174],{"class":709},[699,6232,760],{"class":709},[699,6234,884],{"class":883},[699,6236,3407],{"class":709},[699,6238,6239,6241,6243,6245,6247,6249,6251,6253,6255,6257,6259,6261,6263,6265,6267,6269,6271,6273,6275],{"class":701,"line":856},[699,6240,6168],{"class":709},[699,6242,4434],{"class":965},[699,6244,6174],{"class":709},[699,6246,760],{"class":709},[699,6248,753],{"class":709},[699,6250,6179],{"class":709},[699,6252,1678],{"class":1330},[699,6254,6174],{"class":709},[699,6256,760],{"class":709},[699,6258,1010],{"class":883},[699,6260,750],{"class":709},[699,6262,6179],{"class":709},[699,6264,1705],{"class":1330},[699,6266,6174],{"class":709},[699,6268,760],{"class":709},[699,6270,6179],{"class":709},[699,6272,1022],{"class":723},[699,6274,6174],{"class":709},[699,6276,4235],{"class":709},[699,6278,6279,6281,6283,6285,6287,6289,6291,6293,6295,6297,6299,6301,6303,6305,6307,6309,6311],{"class":701,"line":1085},[699,6280,6168],{"class":709},[699,6282,4512],{"class":965},[699,6284,6174],{"class":709},[699,6286,760],{"class":709},[699,6288,753],{"class":709},[699,6290,6179],{"class":709},[699,6292,3704],{"class":1330},[699,6294,6174],{"class":709},[699,6296,760],{"class":709},[699,6298,1066],{"class":883},[699,6300,750],{"class":709},[699,6302,6179],{"class":709},[699,6304,3725],{"class":1330},[699,6306,6174],{"class":709},[699,6308,760],{"class":709},[699,6310,1076],{"class":883},[699,6312,4235],{"class":709},[699,6314,6315,6317,6320,6322,6324,6326,6328,6330,6332,6334,6336,6338,6340,6342,6344,6346,6348,6350,6352,6354,6356],{"class":701,"line":1581},[699,6316,6168],{"class":709},[699,6318,6319],{"class":965},"payment",[699,6321,6174],{"class":709},[699,6323,760],{"class":709},[699,6325,753],{"class":709},[699,6327,6179],{"class":709},[699,6329,1792],{"class":1330},[699,6331,6174],{"class":709},[699,6333,760],{"class":709},[699,6335,6179],{"class":709},[699,6337,1112],{"class":723},[699,6339,6174],{"class":709},[699,6341,750],{"class":709},[699,6343,6179],{"class":709},[699,6345,4555],{"class":1330},[699,6347,6174],{"class":709},[699,6349,760],{"class":709},[699,6351,6179],{"class":709},[699,6353,1126],{"class":723},[699,6355,6174],{"class":709},[699,6357,1358],{"class":709},[699,6359,6360],{"class":701,"line":1610},[699,6361,1724],{"class":709},[677,6363,6365],{"id":6364},"next-steps","Next Steps",[639,6367,6368,6373,6378,6383],{},[642,6369,6370,6372],{},[623,6371,46],{"href":47}," - Fire-and-forget logs when you don't need context accumulation",[642,6374,6375,6377],{},[623,6376,76],{"href":77}," - Add compile-time type safety to your wide events",[642,6379,6380,6382],{},[623,6381,56],{"href":57}," - Errors with actionable context",[642,6384,6385,6387],{},[623,6386,236],{"href":241}," - Auto-managed request logging per framework",[6389,6390,6391],"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":694,"searchDepth":732,"depth":732,"links":6393},[6394,6395,6403,6406,6412,6419,6420],{"id":679,"depth":732,"text":680},{"id":1426,"depth":732,"text":1427,"children":6396},[6397,6399,6401],{"id":1431,"depth":776,"text":6398},"createLogger (General Purpose)",{"id":1776,"depth":776,"text":6400},"createRequestLogger (HTTP Contexts)",{"id":2024,"depth":776,"text":6402},"useLogger (Retrieving the Request Logger)",{"id":3006,"depth":732,"text":3007,"children":6404},[6405],{"id":3077,"depth":776,"text":3080},{"id":3317,"depth":732,"text":3318,"children":6407},[6408,6409,6410,6411],{"id":3334,"depth":776,"text":3335},{"id":3549,"depth":776,"text":3550},{"id":3645,"depth":776,"text":3646},{"id":3819,"depth":776,"text":3820},{"id":4002,"depth":732,"text":565,"children":6413},[6414,6415,6416,6417,6418],{"id":4005,"depth":776,"text":4006},{"id":4105,"depth":776,"text":4106},{"id":4268,"depth":776,"text":4269},{"id":4676,"depth":776,"text":4677},{"id":5930,"depth":776,"text":5931},{"id":6064,"depth":732,"text":6065},{"id":6364,"depth":732,"text":6365},"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",[6424,6426],{"label":56,"icon":59,"to":57,"color":619,"variant":6425},"subtle",{"label":565,"icon":393,"to":566,"color":619,"variant":6425},{},{"icon":54},{"title":51,"description":6421},"8GdhXZXsMEiyf-dBXtk42wBlb7DTPq9RT6w6AHI3m64",[6432,6434],{"title":46,"path":47,"stem":48,"description":6433,"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":6435,"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.",1791240207511]