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