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