[{"data":1,"prerenderedAt":2822},["ShallowReactive",2],{"navigation_docs":3,"-learn-lifecycle":529,"-learn-lifecycle-surround":2817},[4,29,76,122,304,436,495],{"title":5,"path":6,"stem":7,"children":8,"page":28},"Start","\u002Fstart","1.start",[9,13,18,23],{"title":10,"path":11,"stem":12},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction",{"title":14,"path":15,"stem":16,"icon":17},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":19,"path":20,"stem":21,"icon":22},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":24,"path":25,"stem":26,"icon":27},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":30,"path":31,"stem":32,"children":33,"page":28},"Learn","\u002Flearn","2.learn",[34,38,43,48,53,58,62,67,72],{"title":35,"path":36,"stem":37},"Learn evlog","\u002Flearn\u002Foverview","2.learn\u002F0.overview",{"title":39,"path":40,"stem":41,"icon":42},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":44,"path":45,"stem":46,"icon":47},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":49,"path":50,"stem":51,"icon":52},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":54,"path":55,"stem":56,"icon":57},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":59,"path":60,"stem":61},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling",{"title":63,"path":64,"stem":65,"icon":66},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":68,"path":69,"stem":70,"icon":71},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":73,"path":74,"stem":75},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs",{"title":77,"path":78,"stem":79,"children":80,"page":28},"CLI","\u002Fcli","3.cli",[81,85,90,95,99,103,108,113,118],{"title":82,"path":83,"stem":84},"evlog CLI","\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":86,"path":87,"stem":88,"icon":89},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":91,"path":92,"stem":93,"icon":94},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":96,"path":97,"stem":98},"Map rules","\u002Fcli\u002Frules","3.cli\u002F3.rules",{"title":100,"path":101,"stem":102},"Map scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring",{"title":104,"path":105,"stem":106,"icon":107},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":109,"path":110,"stem":111,"icon":112},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":114,"path":115,"stem":116,"icon":117},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":119,"path":120,"stem":121},"evlog agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents",{"title":123,"path":124,"stem":125,"children":126,"page":28},"Integrate","\u002Fintegrate","4.integrate",[127,132,216],{"title":128,"path":129,"stem":130,"icon":131},"Overview","\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":133,"path":134,"stem":135,"children":136,"page":28},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[137,141,171,196],{"title":128,"path":138,"stem":139,"icon":140},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview","i-lucide-list",{"title":142,"path":143,"stem":144,"children":145,"page":28},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[146,151,156,161,166],{"title":147,"path":148,"stem":149,"icon":150},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":152,"path":153,"stem":154,"icon":155},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":157,"path":158,"stem":159,"icon":160},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":162,"path":163,"stem":164,"icon":165},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":167,"path":168,"stem":169,"icon":170},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":172,"path":173,"stem":174,"children":175,"page":28},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[176,181,186,191],{"title":177,"path":178,"stem":179,"icon":180},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":182,"path":183,"stem":184,"icon":185},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":187,"path":188,"stem":189,"icon":190},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":192,"path":193,"stem":194,"icon":195},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":197,"path":198,"stem":199,"children":200,"page":28},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[201,206,211],{"title":202,"path":203,"stem":204,"icon":205},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":207,"path":208,"stem":209,"icon":210},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":212,"path":213,"stem":214,"icon":215},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":217,"path":218,"stem":219,"children":220,"page":28},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[221,225,230,235,240,245,250,255,260,265,270,275,280,285,289,294,299],{"title":128,"path":222,"stem":223,"icon":224},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":226,"path":227,"stem":228,"icon":229},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":231,"path":232,"stem":233,"icon":234},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":236,"path":237,"stem":238,"icon":239},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":241,"path":242,"stem":243,"icon":244},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":246,"path":247,"stem":248,"icon":249},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":251,"path":252,"stem":253,"icon":254},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":256,"path":257,"stem":258,"icon":259},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":261,"path":262,"stem":263,"icon":264},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":266,"path":267,"stem":268,"icon":269},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":271,"path":272,"stem":273,"icon":274},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":276,"path":277,"stem":278,"icon":279},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":281,"path":282,"stem":283,"icon":284},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":286,"path":287,"stem":288,"icon":71},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":290,"path":291,"stem":292,"icon":293},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":295,"path":296,"stem":297,"icon":298},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":300,"path":301,"stem":302,"icon":303},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":305,"path":306,"stem":307,"children":308,"page":28},"Use Cases","\u002Fuse-cases","5.use-cases",[309,312,317,346,374,407,427,432],{"title":305,"path":310,"stem":311},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":313,"path":314,"stem":315,"icon":316},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":318,"icon":319,"path":320,"stem":321,"children":322,"page":28},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[323,326,331,336,341],{"title":128,"path":324,"stem":325,"icon":140},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":327,"path":328,"stem":329,"icon":330},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":332,"path":333,"stem":334,"icon":335},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":337,"path":338,"stem":339,"icon":340},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":342,"path":343,"stem":344,"icon":345},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":347,"icon":348,"path":349,"stem":350,"children":351,"page":28},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[352,355,360,365,369],{"title":128,"path":353,"stem":354,"icon":140},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":356,"path":357,"stem":358,"icon":359},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":361,"path":362,"stem":363,"icon":364},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":366,"path":367,"stem":368,"icon":316},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":370,"path":371,"stem":372,"icon":373},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":375,"icon":376,"path":377,"stem":378,"children":379,"page":28},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[380,383,388,393,398,402],{"title":128,"path":381,"stem":382,"icon":140},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":384,"path":385,"stem":386,"icon":387},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":389,"path":390,"stem":391,"icon":392},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":394,"path":395,"stem":396,"icon":397},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":399,"path":400,"stem":401,"icon":376},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":403,"path":404,"stem":405,"icon":406},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes","i-lucide-book-open",{"title":342,"icon":373,"path":408,"stem":409,"children":410,"page":28},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[411,414,419,423],{"title":128,"path":412,"stem":413,"icon":140},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":415,"path":416,"stem":417,"icon":418},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":420,"path":421,"stem":422},"Telemetry Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest",{"title":424,"path":425,"stem":426,"icon":406},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":428,"path":429,"stem":430,"icon":431},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":433,"path":434,"stem":435},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve",{"title":437,"path":438,"stem":439,"children":440,"page":28},"Extend","\u002Fextend","6.extend",[441,445,450,455,459,464,468,472,476,481,486,491],{"title":128,"path":442,"stem":443,"icon":444},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":446,"path":447,"stem":448,"icon":449},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":451,"path":452,"stem":453,"icon":454},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":456,"path":457,"stem":458,"icon":449},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":460,"path":461,"stem":462,"icon":463},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":403,"path":465,"stem":466,"icon":467},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":469,"path":470,"stem":471},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":473,"path":474,"stem":475,"icon":431},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":477,"path":478,"stem":479,"icon":480},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling","i-lucide-filter",{"title":482,"path":483,"stem":484,"icon":485},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":487,"path":488,"stem":489,"icon":490},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":492,"path":493,"stem":494},"Drain Pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline",{"title":424,"path":496,"stem":497,"children":498,"page":28},"\u002Freference","7.reference",[499,504,507,512,516,521,525],{"title":500,"path":501,"stem":502,"icon":503},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":370,"path":505,"stem":506,"icon":373},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":508,"path":509,"stem":510,"icon":511},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":513,"path":514,"stem":515,"icon":376},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":517,"path":518,"stem":519,"icon":520},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":522,"path":523,"stem":524,"icon":431},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":526,"path":527,"stem":528},"Log cost","\u002Freference\u002Fcost","7.reference\u002F7.cost",{"id":530,"title":54,"body":531,"description":2806,"extension":2807,"links":2808,"meta":2813,"navigation":2814,"path":55,"seo":2815,"stem":56,"__hash__":2816},"docs\u002F2.learn\u002F4.lifecycle.md",{"type":532,"value":533,"toc":2784},"minimark",[534,538,541,546,691,729,733,736,741,751,757,866,870,877,946,952,956,962,1177,1183,1187,1190,1230,1233,1240,1252,1360,1366,1498,1508,1512,1515,1522,1591,1614,1617,1621,1627,1878,1881,1888,1891,1971,2127,2134,2141,2151,2234,2241,2245,2310,2314,2321,2432,2436,2442,2475,2485,2489,2496,2544,2754,2758,2780],[535,536,537],"p",{},"evlog events follow a pipeline from creation to delivery. The pipeline differs slightly depending on which logging mode you use, but the core stages (emit, sample, enrich, drain) are shared.",[539,540],"lifecycle-flow",{},[542,543,545],"h2",{"id":544},"overview-by-mode","Overview by Mode",[547,548,549,578],"table",{},[550,551,552],"thead",{},[553,554,555,559,566,575],"tr",{},[556,557,558],"th",{},"Stage",[556,560,561,565],{},[562,563,564],"code",{},"log"," (simple)",[556,567,568,571,572],{},[562,569,570],{},"createLogger"," \u002F ",[562,573,574],{},"createRequestLogger",[556,576,577],{},"Framework middleware",[579,580,581,605,629,648,663,678],"tbody",{},[553,582,583,590,593,602],{},[584,585,586],"td",{},[587,588,589],"strong",{},"Create",[584,591,592],{},"Implicit per call",[584,594,595,598,599],{},[562,596,597],{},"createLogger({...})"," or ",[562,600,601],{},"createRequestLogger({...})",[584,603,604],{},"Auto on request start",[553,606,607,612,615,621],{},[584,608,609],{},[587,610,611],{},"Accumulate",[584,613,614],{},"N\u002FA (single call)",[584,616,617,620],{},[562,618,619],{},"log.set()"," multiple times",[584,622,623,625,626],{},[562,624,619],{}," via ",[562,627,628],{},"useLogger(event)",[553,630,631,636,639,645],{},[584,632,633],{},[587,634,635],{},"Emit",[584,637,638],{},"Immediate",[584,640,641,642],{},"Manual ",[562,643,644],{},"log.emit()",[584,646,647],{},"Auto on response end",[553,649,650,655,658,661],{},[584,651,652],{},[587,653,654],{},"Sample",[584,656,657],{},"Head sampling only",[584,659,660],{},"Head + tail sampling",[584,662,660],{},[553,664,665,670,673,675],{},[584,666,667],{},[587,668,669],{},"Enrich",[584,671,672],{},"Via global drain",[584,674,672],{},[584,676,677],{},"Via hooks or callbacks",[553,679,680,685,687,689],{},[584,681,682],{},[587,683,684],{},"Drain",[584,686,672],{},[584,688,672],{},[584,690,677],{},[535,692,693,694,699,700,703,704,571,707,571,710,571,713,716,717,722,723,728],{},"After ",[587,695,696],{},[562,697,698],{},"emit"," (including when sampling returns no output), the request logger is ",[587,701,702],{},"sealed",": later ",[562,705,706],{},"set",[562,708,709],{},"error",[562,711,712],{},"info",[562,714,715],{},"warn"," calls are ignored with a console warning. For background work that needs its own event, use ",[587,718,719],{},[562,720,721],{},"log.fork()"," where your integration supports it. See ",[724,725,727],"a",{"href":726},"\u002Flearn\u002Fwide-events#after-emit-sealing-and-background-work","After emit"," in Wide events.",[542,730,732],{"id":731},"request-logging-step-by-step","Request Logging — Step by Step",[535,734,735],{},"For framework-managed request logging, every request walks the pipeline above. Each stage is detailed below.",[737,738,740],"h3",{"id":739},"_1-route-filtering","1. Route Filtering",[535,742,743,744,571,747,750],{},"When a request arrives, evlog checks whether the path matches the configured ",[562,745,746],{},"include",[562,748,749],{},"exclude"," patterns. If the route is excluded, no logger is created and the request proceeds without any logging overhead.",[535,752,753,754,756],{},"By default, all routes are logged. Use ",[562,755,746],{}," to restrict logging to specific patterns:",[758,759,765],"pre",{"className":760,"code":761,"filename":762,"language":763,"meta":764,"style":764},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    include: ['\u002Fapi\u002F**'],\n  },\n})\n","nuxt.config.ts","typescript","",[562,766,767,791,819,830,851,857],{"__ignoreMap":764},[768,769,772,776,779,783,787],"span",{"class":770,"line":771},"line",1,[768,773,775],{"class":774},"s7zQu","export",[768,777,778],{"class":774}," default",[768,780,782],{"class":781},"s2Zo4"," defineNuxtConfig",[768,784,786],{"class":785},"sTEyZ","(",[768,788,790],{"class":789},"sMK4o","{\n",[768,792,794,798,801,804,807,811,813,816],{"class":770,"line":793},2,[768,795,797],{"class":796},"swJcz","  modules",[768,799,800],{"class":789},":",[768,802,803],{"class":785}," [",[768,805,806],{"class":789},"'",[768,808,810],{"class":809},"sfazB","evlog\u002Fnuxt",[768,812,806],{"class":789},[768,814,815],{"class":785},"]",[768,817,818],{"class":789},",\n",[768,820,822,825,827],{"class":770,"line":821},3,[768,823,824],{"class":796},"  evlog",[768,826,800],{"class":789},[768,828,829],{"class":789}," {\n",[768,831,833,836,838,840,842,845,847,849],{"class":770,"line":832},4,[768,834,835],{"class":796},"    include",[768,837,800],{"class":789},[768,839,803],{"class":785},[768,841,806],{"class":789},[768,843,844],{"class":809},"\u002Fapi\u002F**",[768,846,806],{"class":789},[768,848,815],{"class":785},[768,850,818],{"class":789},[768,852,854],{"class":770,"line":853},5,[768,855,856],{"class":789},"  },\n",[768,858,860,863],{"class":770,"line":859},6,[768,861,862],{"class":789},"}",[768,864,865],{"class":785},")\n",[737,867,869],{"id":868},"_2-logger-creation","2. Logger Creation",[535,871,872,873,876],{},"For matched routes, evlog creates a ",[562,874,875],{},"RequestLogger"," and attaches it to the request context. The logger is pre-populated with:",[547,878,879,889],{},[550,880,881],{},[553,882,883,886],{},[556,884,885],{},"Field",[556,887,888],{},"Source",[579,890,891,909,919,933],{},[553,892,893,898],{},[584,894,895],{},[562,896,897],{},"method",[584,899,900,901,904,905,908],{},"HTTP method (",[562,902,903],{},"GET",", ",[562,906,907],{},"POST",", ...)",[553,910,911,916],{},[584,912,913],{},[562,914,915],{},"path",[584,917,918],{},"Request path",[553,920,921,926],{},[584,922,923],{},[562,924,925],{},"requestId",[584,927,928,929,932],{},"Auto-generated UUID (or ",[562,930,931],{},"cf-ray"," on Cloudflare)",[553,934,935,940],{},[584,936,937],{},[562,938,939],{},"startTime",[584,941,942,945],{},[562,943,944],{},"Date.now()"," for duration calculation",[535,947,948,949,951],{},"The logger is stored on the event context. ",[562,950,628],{}," is a shortcut to retrieve it, it doesn't create a new logger.",[737,953,955],{"id":954},"_3-context-accumulation","3. Context Accumulation",[535,957,958,959,961],{},"During the handler, you call ",[562,960,619],{}," to attach context. Each call deep-merges into the existing context, so you can call it as many times as needed:",[758,963,966],{"className":760,"code":964,"filename":965,"language":763,"meta":764,"style":764},"import { useLogger } from 'evlog'\n\nconst log = useLogger(event)\n\nconst user = await getUser(event)\nlog.set({ user: { id: user.id, plan: user.plan } })\n\nconst cart = await getCart(user.id)\nlog.set({ cart: { items: cart.items.length, total: cart.total } })\n","server\u002Fapi\u002Fcheckout.post.ts",[562,967,968,994,1000,1017,1021,1038,1092,1097,1120],{"__ignoreMap":764},[768,969,970,973,976,979,982,985,988,991],{"class":770,"line":771},[768,971,972],{"class":774},"import",[768,974,975],{"class":789}," {",[768,977,978],{"class":785}," useLogger",[768,980,981],{"class":789}," }",[768,983,984],{"class":774}," from",[768,986,987],{"class":789}," '",[768,989,990],{"class":809},"evlog",[768,992,993],{"class":789},"'\n",[768,995,996],{"class":770,"line":793},[768,997,999],{"emptyLinePlaceholder":998},true,"\n",[768,1001,1002,1006,1009,1012,1014],{"class":770,"line":821},[768,1003,1005],{"class":1004},"spNyl","const",[768,1007,1008],{"class":785}," log ",[768,1010,1011],{"class":789},"=",[768,1013,978],{"class":781},[768,1015,1016],{"class":785},"(event)\n",[768,1018,1019],{"class":770,"line":832},[768,1020,999],{"emptyLinePlaceholder":998},[768,1022,1023,1025,1028,1030,1033,1036],{"class":770,"line":853},[768,1024,1005],{"class":1004},[768,1026,1027],{"class":785}," user ",[768,1029,1011],{"class":789},[768,1031,1032],{"class":774}," await",[768,1034,1035],{"class":781}," getUser",[768,1037,1016],{"class":785},[768,1039,1040,1042,1045,1047,1049,1052,1055,1057,1059,1062,1064,1066,1068,1071,1074,1077,1079,1081,1083,1086,1088,1090],{"class":770,"line":859},[768,1041,564],{"class":785},[768,1043,1044],{"class":789},".",[768,1046,706],{"class":781},[768,1048,786],{"class":785},[768,1050,1051],{"class":789},"{",[768,1053,1054],{"class":796}," user",[768,1056,800],{"class":789},[768,1058,975],{"class":789},[768,1060,1061],{"class":796}," id",[768,1063,800],{"class":789},[768,1065,1054],{"class":785},[768,1067,1044],{"class":789},[768,1069,1070],{"class":785},"id",[768,1072,1073],{"class":789},",",[768,1075,1076],{"class":796}," plan",[768,1078,800],{"class":789},[768,1080,1054],{"class":785},[768,1082,1044],{"class":789},[768,1084,1085],{"class":785},"plan ",[768,1087,862],{"class":789},[768,1089,981],{"class":789},[768,1091,865],{"class":785},[768,1093,1095],{"class":770,"line":1094},7,[768,1096,999],{"emptyLinePlaceholder":998},[768,1098,1100,1102,1105,1107,1109,1112,1115,1117],{"class":770,"line":1099},8,[768,1101,1005],{"class":1004},[768,1103,1104],{"class":785}," cart ",[768,1106,1011],{"class":789},[768,1108,1032],{"class":774},[768,1110,1111],{"class":781}," getCart",[768,1113,1114],{"class":785},"(user",[768,1116,1044],{"class":789},[768,1118,1119],{"class":785},"id)\n",[768,1121,1123,1125,1127,1129,1131,1133,1136,1138,1140,1143,1145,1147,1149,1152,1154,1157,1159,1162,1164,1166,1168,1171,1173,1175],{"class":770,"line":1122},9,[768,1124,564],{"class":785},[768,1126,1044],{"class":789},[768,1128,706],{"class":781},[768,1130,786],{"class":785},[768,1132,1051],{"class":789},[768,1134,1135],{"class":796}," cart",[768,1137,800],{"class":789},[768,1139,975],{"class":789},[768,1141,1142],{"class":796}," items",[768,1144,800],{"class":789},[768,1146,1135],{"class":785},[768,1148,1044],{"class":789},[768,1150,1151],{"class":785},"items",[768,1153,1044],{"class":789},[768,1155,1156],{"class":785},"length",[768,1158,1073],{"class":789},[768,1160,1161],{"class":796}," total",[768,1163,800],{"class":789},[768,1165,1135],{"class":785},[768,1167,1044],{"class":789},[768,1169,1170],{"class":785},"total ",[768,1172,862],{"class":789},[768,1174,981],{"class":789},[768,1176,865],{"class":785},[535,1178,1179,1180,1182],{},"If an error is thrown, evlog's ",[562,1181,709],{}," hook captures it automatically and records it on the logger with the status code.",[737,1184,1186],{"id":1185},"_4-request-end","4. Request End",[535,1188,1189],{},"When the response is sent (or an error is thrown), evlog computes:",[1191,1192,1193,1207,1216],"ul",{},[1194,1195,1196,1199,1200,571,1203,1206],"li",{},[587,1197,1198],{},"Status code"," from the response (or from the error's ",[562,1201,1202],{},"status",[562,1204,1205],{},"statusCode",")",[1194,1208,1209,1212,1213],{},[587,1210,1211],{},"Duration"," from ",[562,1214,1215],{},"Date.now() - startTime",[1194,1217,1218,1221,1222,1224,1225,1227,1228],{},[587,1219,1220],{},"Level"," - ",[562,1223,709],{}," if an error was recorded, ",[562,1226,715],{}," if status >= 400, otherwise ",[562,1229,712],{},[535,1231,1232],{},"If an error triggered the emit, the request is marked as already emitted to prevent double-emission in the response hook.",[737,1234,1236,1237,1206],{"id":1235},"_5-tail-sampling-evlogemitkeep","5. Tail Sampling (",[562,1238,1239],{},"evlog:emit:keep",[535,1241,1242,1243,1246,1247,1251],{},"Before the event is sampled, evlog evaluates ",[587,1244,1245],{},"tail sampling"," rules. These run ",[1248,1249,1250],"em",{},"after"," the request completes, so they can inspect the outcome:",[758,1253,1255],{"className":760,"code":1254,"filename":762,"language":763,"meta":764,"style":764},"evlog: {\n  sampling: {\n    keep: [\n      { duration: 1000 },          \u002F\u002F slow requests\n      { status: 400 },             \u002F\u002F client\u002Fserver errors\n      { path: '\u002Fapi\u002Fcritical\u002F**' }, \u002F\u002F critical paths\n    ],\n  },\n}\n",[562,1256,1257,1266,1275,1285,1306,1323,1344,1351,1355],{"__ignoreMap":764},[768,1258,1259,1262,1264],{"class":770,"line":771},[768,1260,990],{"class":1261},"sBMFI",[768,1263,800],{"class":789},[768,1265,829],{"class":789},[768,1267,1268,1271,1273],{"class":770,"line":793},[768,1269,1270],{"class":1261},"  sampling",[768,1272,800],{"class":789},[768,1274,829],{"class":789},[768,1276,1277,1280,1282],{"class":770,"line":821},[768,1278,1279],{"class":1261},"    keep",[768,1281,800],{"class":789},[768,1283,1284],{"class":796}," [\n",[768,1286,1287,1290,1293,1295,1299,1302],{"class":770,"line":832},[768,1288,1289],{"class":789},"      {",[768,1291,1292],{"class":796}," duration",[768,1294,800],{"class":789},[768,1296,1298],{"class":1297},"sbssI"," 1000",[768,1300,1301],{"class":789}," },",[768,1303,1305],{"class":1304},"sHwdD","          \u002F\u002F slow requests\n",[768,1307,1308,1310,1313,1315,1318,1320],{"class":770,"line":853},[768,1309,1289],{"class":789},[768,1311,1312],{"class":796}," status",[768,1314,800],{"class":789},[768,1316,1317],{"class":1297}," 400",[768,1319,1301],{"class":789},[768,1321,1322],{"class":1304},"             \u002F\u002F client\u002Fserver errors\n",[768,1324,1325,1327,1330,1332,1334,1337,1339,1341],{"class":770,"line":859},[768,1326,1289],{"class":789},[768,1328,1329],{"class":796}," path",[768,1331,800],{"class":789},[768,1333,987],{"class":789},[768,1335,1336],{"class":809},"\u002Fapi\u002Fcritical\u002F**",[768,1338,806],{"class":789},[768,1340,1301],{"class":789},[768,1342,1343],{"class":1304}," \u002F\u002F critical paths\n",[768,1345,1346,1349],{"class":770,"line":1094},[768,1347,1348],{"class":796},"    ]",[768,1350,818],{"class":789},[768,1352,1353],{"class":770,"line":1099},[768,1354,856],{"class":789},[768,1356,1357],{"class":770,"line":1122},[768,1358,1359],{"class":789},"}\n",[535,1361,1362,1363,1365],{},"The ",[562,1364,1239],{}," hook also fires, letting you force-keep based on custom business logic:",[758,1367,1370],{"className":760,"code":1368,"filename":1369,"language":763,"meta":764,"style":764},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:emit:keep', (ctx) => {\n    if (ctx.context.user?.premium) {\n      ctx.shouldKeep = true\n    }\n  })\n})\n","server\u002Fplugins\u002Fevlog-custom.ts",[562,1371,1372,1396,1433,1463,1480,1485,1492],{"__ignoreMap":764},[768,1373,1374,1376,1378,1381,1383,1385,1389,1391,1394],{"class":770,"line":771},[768,1375,775],{"class":774},[768,1377,778],{"class":774},[768,1379,1380],{"class":781}," defineNitroPlugin",[768,1382,786],{"class":785},[768,1384,786],{"class":789},[768,1386,1388],{"class":1387},"sHdIc","nitroApp",[768,1390,1206],{"class":789},[768,1392,1393],{"class":1004}," =>",[768,1395,829],{"class":789},[768,1397,1398,1401,1403,1406,1408,1411,1413,1415,1417,1419,1421,1424,1427,1429,1431],{"class":770,"line":793},[768,1399,1400],{"class":785},"  nitroApp",[768,1402,1044],{"class":789},[768,1404,1405],{"class":785},"hooks",[768,1407,1044],{"class":789},[768,1409,1410],{"class":781},"hook",[768,1412,786],{"class":796},[768,1414,806],{"class":789},[768,1416,1239],{"class":809},[768,1418,806],{"class":789},[768,1420,1073],{"class":789},[768,1422,1423],{"class":789}," (",[768,1425,1426],{"class":1387},"ctx",[768,1428,1206],{"class":789},[768,1430,1393],{"class":1004},[768,1432,829],{"class":789},[768,1434,1435,1438,1440,1442,1444,1447,1449,1452,1455,1458,1461],{"class":770,"line":821},[768,1436,1437],{"class":774},"    if",[768,1439,1423],{"class":796},[768,1441,1426],{"class":785},[768,1443,1044],{"class":789},[768,1445,1446],{"class":785},"context",[768,1448,1044],{"class":789},[768,1450,1451],{"class":785},"user",[768,1453,1454],{"class":789},"?.",[768,1456,1457],{"class":785},"premium",[768,1459,1460],{"class":796},") ",[768,1462,790],{"class":789},[768,1464,1465,1468,1470,1473,1476],{"class":770,"line":832},[768,1466,1467],{"class":785},"      ctx",[768,1469,1044],{"class":789},[768,1471,1472],{"class":785},"shouldKeep",[768,1474,1475],{"class":789}," =",[768,1477,1479],{"class":1478},"sfNiH"," true\n",[768,1481,1482],{"class":770,"line":853},[768,1483,1484],{"class":789},"    }\n",[768,1486,1487,1490],{"class":770,"line":859},[768,1488,1489],{"class":789},"  }",[768,1491,865],{"class":796},[768,1493,1494,1496],{"class":770,"line":1094},[768,1495,862],{"class":789},[768,1497,865],{"class":785},[535,1499,1500,1501,1504,1505,1044],{},"If any rule or hook sets ",[562,1502,1503],{},"shouldKeep = true",", the event ",[587,1506,1507],{},"bypasses head sampling entirely",[737,1509,1511],{"id":1510},"_6-head-sampling","6. Head Sampling",[535,1513,1514],{},"If the event wasn't force-kept by tail sampling, head sampling applies. This is a random coin flip per log level.",[535,1516,1517,1518,1521],{},"By default, all levels are kept at 100% (no sampling). Configure ",[562,1519,1520],{},"sampling.rates"," to reduce volume in production:",[758,1523,1525],{"className":760,"code":1524,"filename":762,"language":763,"meta":764,"style":764},"evlog: {\n  sampling: {\n    rates: { info: 10, warn: 50, debug: 0 },\n  },\n}\n",[562,1526,1527,1535,1543,1583,1587],{"__ignoreMap":764},[768,1528,1529,1531,1533],{"class":770,"line":771},[768,1530,990],{"class":1261},[768,1532,800],{"class":789},[768,1534,829],{"class":789},[768,1536,1537,1539,1541],{"class":770,"line":793},[768,1538,1270],{"class":1261},[768,1540,800],{"class":789},[768,1542,829],{"class":789},[768,1544,1545,1548,1550,1552,1555,1557,1560,1562,1565,1567,1570,1572,1575,1577,1580],{"class":770,"line":821},[768,1546,1547],{"class":1261},"    rates",[768,1549,800],{"class":789},[768,1551,975],{"class":789},[768,1553,1554],{"class":1261}," info",[768,1556,800],{"class":789},[768,1558,1559],{"class":1297}," 10",[768,1561,1073],{"class":789},[768,1563,1564],{"class":1261}," warn",[768,1566,800],{"class":789},[768,1568,1569],{"class":1297}," 50",[768,1571,1073],{"class":789},[768,1573,1574],{"class":1261}," debug",[768,1576,800],{"class":789},[768,1578,1579],{"class":1297}," 0",[768,1581,1582],{"class":789}," },\n",[768,1584,1585],{"class":770,"line":832},[768,1586,856],{"class":789},[768,1588,1589],{"class":770,"line":853},[768,1590,1359],{"class":789},[1191,1592,1593,1599,1605],{},[1194,1594,1595,1598],{},[562,1596,1597],{},"info: 10"," - keep 10% of info-level events",[1194,1600,1601,1604],{},[562,1602,1603],{},"warn: 50"," - keep 50% of warnings",[1194,1606,1607,1609,1610,1613],{},[562,1608,709],{}," defaults to ",[587,1611,1612],{},"100%"," (never sampled out, even if you set a rate)",[535,1615,1616],{},"If the event is sampled out, processing stops entirely: no console output, no enrichment, no drain.",[737,1618,1620],{"id":1619},"_7-emit","7. Emit",[535,1622,1362,1623,1626],{},[562,1624,1625],{},"WideEvent"," object is built from the accumulated context:",[758,1628,1632],{"className":1629,"code":1630,"filename":1625,"language":1631,"meta":764,"style":764},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"timestamp\": \"2026-01-15T10:30:00.000Z\",\n  \"level\": \"info\",\n  \"service\": \"my-app\",\n  \"method\": \"POST\",\n  \"path\": \"\u002Fapi\u002Fcheckout\",\n  \"requestId\": \"abc-123\",\n  \"duration\": 234,\n  \"status\": 200,\n  \"user\": { \"id\": 1, \"plan\": \"pro\" },\n  \"cart\": { \"items\": 3, \"total\": 9999 }\n}\n","json",[562,1633,1634,1638,1661,1680,1700,1718,1737,1756,1772,1787,1831,1873],{"__ignoreMap":764},[768,1635,1636],{"class":770,"line":771},[768,1637,790],{"class":789},[768,1639,1640,1643,1646,1649,1651,1654,1657,1659],{"class":770,"line":793},[768,1641,1642],{"class":789},"  \"",[768,1644,1645],{"class":1004},"timestamp",[768,1647,1648],{"class":789},"\"",[768,1650,800],{"class":789},[768,1652,1653],{"class":789}," \"",[768,1655,1656],{"class":809},"2026-01-15T10:30:00.000Z",[768,1658,1648],{"class":789},[768,1660,818],{"class":789},[768,1662,1663,1665,1668,1670,1672,1674,1676,1678],{"class":770,"line":821},[768,1664,1642],{"class":789},[768,1666,1667],{"class":1004},"level",[768,1669,1648],{"class":789},[768,1671,800],{"class":789},[768,1673,1653],{"class":789},[768,1675,712],{"class":809},[768,1677,1648],{"class":789},[768,1679,818],{"class":789},[768,1681,1682,1684,1687,1689,1691,1693,1696,1698],{"class":770,"line":832},[768,1683,1642],{"class":789},[768,1685,1686],{"class":1004},"service",[768,1688,1648],{"class":789},[768,1690,800],{"class":789},[768,1692,1653],{"class":789},[768,1694,1695],{"class":809},"my-app",[768,1697,1648],{"class":789},[768,1699,818],{"class":789},[768,1701,1702,1704,1706,1708,1710,1712,1714,1716],{"class":770,"line":853},[768,1703,1642],{"class":789},[768,1705,897],{"class":1004},[768,1707,1648],{"class":789},[768,1709,800],{"class":789},[768,1711,1653],{"class":789},[768,1713,907],{"class":809},[768,1715,1648],{"class":789},[768,1717,818],{"class":789},[768,1719,1720,1722,1724,1726,1728,1730,1733,1735],{"class":770,"line":859},[768,1721,1642],{"class":789},[768,1723,915],{"class":1004},[768,1725,1648],{"class":789},[768,1727,800],{"class":789},[768,1729,1653],{"class":789},[768,1731,1732],{"class":809},"\u002Fapi\u002Fcheckout",[768,1734,1648],{"class":789},[768,1736,818],{"class":789},[768,1738,1739,1741,1743,1745,1747,1749,1752,1754],{"class":770,"line":1094},[768,1740,1642],{"class":789},[768,1742,925],{"class":1004},[768,1744,1648],{"class":789},[768,1746,800],{"class":789},[768,1748,1653],{"class":789},[768,1750,1751],{"class":809},"abc-123",[768,1753,1648],{"class":789},[768,1755,818],{"class":789},[768,1757,1758,1760,1763,1765,1767,1770],{"class":770,"line":1099},[768,1759,1642],{"class":789},[768,1761,1762],{"class":1004},"duration",[768,1764,1648],{"class":789},[768,1766,800],{"class":789},[768,1768,1769],{"class":1297}," 234",[768,1771,818],{"class":789},[768,1773,1774,1776,1778,1780,1782,1785],{"class":770,"line":1122},[768,1775,1642],{"class":789},[768,1777,1202],{"class":1004},[768,1779,1648],{"class":789},[768,1781,800],{"class":789},[768,1783,1784],{"class":1297}," 200",[768,1786,818],{"class":789},[768,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1811,1813,1815,1818,1820,1822,1824,1827,1829],{"class":770,"line":1789},10,[768,1791,1642],{"class":789},[768,1793,1451],{"class":1004},[768,1795,1648],{"class":789},[768,1797,800],{"class":789},[768,1799,975],{"class":789},[768,1801,1653],{"class":789},[768,1803,1070],{"class":1261},[768,1805,1648],{"class":789},[768,1807,800],{"class":789},[768,1809,1810],{"class":1297}," 1",[768,1812,1073],{"class":789},[768,1814,1653],{"class":789},[768,1816,1817],{"class":1261},"plan",[768,1819,1648],{"class":789},[768,1821,800],{"class":789},[768,1823,1653],{"class":789},[768,1825,1826],{"class":809},"pro",[768,1828,1648],{"class":789},[768,1830,1582],{"class":789},[768,1832,1834,1836,1839,1841,1843,1845,1847,1849,1851,1853,1856,1858,1860,1863,1865,1867,1870],{"class":770,"line":1833},11,[768,1835,1642],{"class":789},[768,1837,1838],{"class":1004},"cart",[768,1840,1648],{"class":789},[768,1842,800],{"class":789},[768,1844,975],{"class":789},[768,1846,1653],{"class":789},[768,1848,1151],{"class":1261},[768,1850,1648],{"class":789},[768,1852,800],{"class":789},[768,1854,1855],{"class":1297}," 3",[768,1857,1073],{"class":789},[768,1859,1653],{"class":789},[768,1861,1862],{"class":1261},"total",[768,1864,1648],{"class":789},[768,1866,800],{"class":789},[768,1868,1869],{"class":1297}," 9999",[768,1871,1872],{"class":789}," }\n",[768,1874,1876],{"class":770,"line":1875},12,[768,1877,1359],{"class":789},[535,1879,1880],{},"The event is printed to the console, pretty-formatted in development and as JSON in production. This is the default behavior, no configuration needed.",[737,1882,1884,1885,1206],{"id":1883},"_8-enrich-evlogenrich","8. Enrich (",[562,1886,1887],{},"evlog:enrich",[535,1889,1890],{},"After emission, enrichers add derived context to the event. Built-in enrichers extract data from request headers:",[547,1892,1893,1905],{},[550,1894,1895],{},[553,1896,1897,1900,1903],{},[556,1898,1899],{},"Enricher",[556,1901,1902],{},"Adds",[556,1904,888],{},[579,1906,1907,1924,1938,1955],{},[553,1908,1909,1912,1918],{},[584,1910,1911],{},"User Agent",[584,1913,1914,1917],{},[562,1915,1916],{},"userAgent"," (browser, OS, device)",[584,1919,1920,1923],{},[562,1921,1922],{},"User-Agent"," header",[553,1925,1926,1929,1935],{},[584,1927,1928],{},"Geo",[584,1930,1931,1934],{},[562,1932,1933],{},"geo"," (country, region, city)",[584,1936,1937],{},"Platform headers (Vercel, Cloudflare)",[553,1939,1940,1943,1949],{},[584,1941,1942],{},"Request Size",[584,1944,1945,1948],{},[562,1946,1947],{},"requestSize"," (request\u002Fresponse bytes)",[584,1950,1951,1954],{},[562,1952,1953],{},"Content-Length"," headers",[553,1956,1957,1960,1966],{},[584,1958,1959],{},"Trace Context",[584,1961,1962,1965],{},[562,1963,1964],{},"traceContext"," (traceId, spanId)",[584,1967,1968,1923],{},[562,1969,1970],{},"traceparent",[758,1972,1975],{"className":760,"code":1973,"filename":1974,"language":763,"meta":764,"style":764},"import { createUserAgentEnricher, createGeoEnricher } from 'evlog\u002Fenrichers'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const enrichers = [createUserAgentEnricher(), createGeoEnricher()]\n\n  nitroApp.hooks.hook('evlog:enrich', (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  })\n})\n","server\u002Fplugins\u002Fevlog-enrich.ts",[562,1976,1977,2002,2006,2026,2051,2055,2087,2115,2121],{"__ignoreMap":764},[768,1978,1979,1981,1983,1986,1988,1991,1993,1995,1997,2000],{"class":770,"line":771},[768,1980,972],{"class":774},[768,1982,975],{"class":789},[768,1984,1985],{"class":785}," createUserAgentEnricher",[768,1987,1073],{"class":789},[768,1989,1990],{"class":785}," createGeoEnricher",[768,1992,981],{"class":789},[768,1994,984],{"class":774},[768,1996,987],{"class":789},[768,1998,1999],{"class":809},"evlog\u002Fenrichers",[768,2001,993],{"class":789},[768,2003,2004],{"class":770,"line":793},[768,2005,999],{"emptyLinePlaceholder":998},[768,2007,2008,2010,2012,2014,2016,2018,2020,2022,2024],{"class":770,"line":821},[768,2009,775],{"class":774},[768,2011,778],{"class":774},[768,2013,1380],{"class":781},[768,2015,786],{"class":785},[768,2017,786],{"class":789},[768,2019,1388],{"class":1387},[768,2021,1206],{"class":789},[768,2023,1393],{"class":1004},[768,2025,829],{"class":789},[768,2027,2028,2031,2034,2036,2038,2041,2044,2046,2048],{"class":770,"line":832},[768,2029,2030],{"class":1004},"  const",[768,2032,2033],{"class":785}," enrichers",[768,2035,1475],{"class":789},[768,2037,803],{"class":796},[768,2039,2040],{"class":781},"createUserAgentEnricher",[768,2042,2043],{"class":796},"()",[768,2045,1073],{"class":789},[768,2047,1990],{"class":781},[768,2049,2050],{"class":796},"()]\n",[768,2052,2053],{"class":770,"line":853},[768,2054,999],{"emptyLinePlaceholder":998},[768,2056,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085],{"class":770,"line":859},[768,2058,1400],{"class":785},[768,2060,1044],{"class":789},[768,2062,1405],{"class":785},[768,2064,1044],{"class":789},[768,2066,1410],{"class":781},[768,2068,786],{"class":796},[768,2070,806],{"class":789},[768,2072,1887],{"class":809},[768,2074,806],{"class":789},[768,2076,1073],{"class":789},[768,2078,1423],{"class":789},[768,2080,1426],{"class":1387},[768,2082,1206],{"class":789},[768,2084,1393],{"class":1004},[768,2086,829],{"class":789},[768,2088,2089,2092,2094,2096,2099,2102,2104,2106,2109,2111,2113],{"class":770,"line":1094},[768,2090,2091],{"class":774},"    for",[768,2093,1423],{"class":796},[768,2095,1005],{"class":1004},[768,2097,2098],{"class":785}," enricher",[768,2100,2101],{"class":789}," of",[768,2103,2033],{"class":785},[768,2105,1460],{"class":796},[768,2107,2108],{"class":781},"enricher",[768,2110,786],{"class":796},[768,2112,1426],{"class":785},[768,2114,865],{"class":796},[768,2116,2117,2119],{"class":770,"line":1099},[768,2118,1489],{"class":789},[768,2120,865],{"class":796},[768,2122,2123,2125],{"class":770,"line":1122},[768,2124,862],{"class":789},[768,2126,865],{"class":785},[535,2128,2129,2130,2133],{},"Enrichers receive the full ",[562,2131,2132],{},"EnrichContext"," with the mutable event, request metadata, safe headers, and response info.",[737,2135,2137,2138,1206],{"id":2136},"_9-drain-evlogdrain","9. Drain (",[562,2139,2140],{},"evlog:drain",[535,2142,2143,2144,2146,2147,2150],{},"The final step sends the enriched event to your observability platform. The ",[562,2145,2140],{}," hook receives a ",[562,2148,2149],{},"DrainContext"," with the complete event:",[758,2152,2155],{"className":760,"code":2153,"filename":2154,"language":763,"meta":764,"style":764},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createAxiomDrain())\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[562,2156,2157,2177,2181,2201,2228],{"__ignoreMap":764},[768,2158,2159,2161,2163,2166,2168,2170,2172,2175],{"class":770,"line":771},[768,2160,972],{"class":774},[768,2162,975],{"class":789},[768,2164,2165],{"class":785}," createAxiomDrain",[768,2167,981],{"class":789},[768,2169,984],{"class":774},[768,2171,987],{"class":789},[768,2173,2174],{"class":809},"evlog\u002Faxiom",[768,2176,993],{"class":789},[768,2178,2179],{"class":770,"line":793},[768,2180,999],{"emptyLinePlaceholder":998},[768,2182,2183,2185,2187,2189,2191,2193,2195,2197,2199],{"class":770,"line":821},[768,2184,775],{"class":774},[768,2186,778],{"class":774},[768,2188,1380],{"class":781},[768,2190,786],{"class":785},[768,2192,786],{"class":789},[768,2194,1388],{"class":1387},[768,2196,1206],{"class":789},[768,2198,1393],{"class":1004},[768,2200,829],{"class":789},[768,2202,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225],{"class":770,"line":832},[768,2204,1400],{"class":785},[768,2206,1044],{"class":789},[768,2208,1405],{"class":785},[768,2210,1044],{"class":789},[768,2212,1410],{"class":781},[768,2214,786],{"class":796},[768,2216,806],{"class":789},[768,2218,2140],{"class":809},[768,2220,806],{"class":789},[768,2222,1073],{"class":789},[768,2224,2165],{"class":781},[768,2226,2227],{"class":796},"())\n",[768,2229,2230,2232],{"class":770,"line":853},[768,2231,862],{"class":789},[768,2233,865],{"class":785},[535,2235,2236,2237,2240],{},"On platforms with ",[562,2238,2239],{},"waitUntil"," (Cloudflare Workers, Vercel Edge), the drain runs after the response is sent to avoid adding latency. On traditional servers, the drain is awaited to prevent losing events in serverless cold shutdowns.",[542,2242,2244],{"id":2243},"hook-execution-order","Hook Execution Order",[547,2246,2247,2263],{},[550,2248,2249],{},[553,2250,2251,2254,2257,2260],{},[556,2252,2253],{},"Order",[556,2255,2256],{},"Hook",[556,2258,2259],{},"When",[556,2261,2262],{},"Purpose",[579,2264,2265,2280,2295],{},[553,2266,2267,2270,2274,2277],{},[584,2268,2269],{},"1",[584,2271,2272],{},[562,2273,1239],{},[584,2275,2276],{},"After request ends, before sampling",[584,2278,2279],{},"Force-keep events based on outcome",[553,2281,2282,2285,2289,2292],{},[584,2283,2284],{},"2",[584,2286,2287],{},[562,2288,1887],{},[584,2290,2291],{},"After emit, before drain",[584,2293,2294],{},"Add derived context to the event",[553,2296,2297,2300,2304,2307],{},[584,2298,2299],{},"3",[584,2301,2302],{},[562,2303,2140],{},[584,2305,2306],{},"After enrichment",[584,2308,2309],{},"Send event to external services",[542,2311,2313],{"id":2312},"error-vs-success-path","Error vs Success Path",[535,2315,2316,2317,2320],{},"Both paths converge at the same emit\u002Fenrich\u002Fdrain pipeline. The only difference is ",[1248,2318,2319],{},"when"," the emit is triggered:",[547,2322,2323,2335],{},[550,2324,2325],{},[553,2326,2327,2329,2332],{},[556,2328],{},[556,2330,2331],{},"Success",[556,2333,2334],{},"Error",[579,2336,2337,2357,2375,2391,2412],{},[553,2338,2339,2344,2353],{},[584,2340,2341],{},[587,2342,2343],{},"Trigger",[584,2345,2346,571,2349,2352],{},[562,2347,2348],{},"afterResponse",[562,2350,2351],{},"response"," hook",[584,2354,2355,2352],{},[562,2356,709],{},[553,2358,2359,2363,2371],{},[584,2360,2361],{},[587,2362,1220],{},[584,2364,2365,2367,2368,2370],{},[562,2366,712],{}," (or ",[562,2369,715],{}," if status >= 400)",[584,2372,2373],{},[562,2374,709],{},[553,2376,2377,2382,2385],{},[584,2378,2379],{},[587,2380,2381],{},"Status",[584,2383,2384],{},"From response",[584,2386,2387,2388,2390],{},"From error's ",[562,2389,1202],{}," field (default 500)",[553,2392,2393,2398,2401],{},[584,2394,2395],{},[587,2396,2397],{},"Error context",[584,2399,2400],{},"None",[584,2402,2403,2405,2406,904,2409],{},[562,2404,709],{}," field with message, stack, ",[562,2407,2408],{},"why",[562,2410,2411],{},"fix",[553,2413,2414,2419,2426],{},[584,2415,2416],{},[587,2417,2418],{},"Double-emit guard",[584,2420,2421,2422,2425],{},"Checks ",[562,2423,2424],{},"_evlogEmitted"," flag",[584,2427,2428,2429],{},"Sets ",[562,2430,2431],{},"_evlogEmitted = true",[542,2433,2435],{"id":2434},"simple-logging-pipeline","Simple Logging Pipeline",[535,2437,2438,2439,2441],{},"When using the ",[562,2440,564],{}," singleton, the pipeline is shorter:",[2443,2444,2445,2457,2462],"ol",{},[1194,2446,2447,2450,2451,598,2454],{},[587,2448,2449],{},"Call",": ",[562,2452,2453],{},"log.info({ action: 'deploy' })",[562,2455,2456],{},"log.info('tag', 'message')",[1194,2458,2459,2461],{},[587,2460,635],{},": The event is built and printed immediately",[1194,2463,2464,2466,2467,2470,2471,2474],{},[587,2465,684],{},": If a global ",[562,2468,2469],{},"drain"," was configured via ",[562,2472,2473],{},"initLogger()",", the event is sent to external services",[535,2476,2477,2478,2480,2481,2484],{},"Tagged logs (",[562,2479,2456],{},") are console-only in pretty mode. Object-form logs (",[562,2482,2483],{},"log.info({ ... })",") always flow through the drain pipeline.",[542,2486,2488],{"id":2487},"standalone-wide-event-pipeline","Standalone Wide Event Pipeline",[535,2490,2491,2492,2495],{},"When using ",[562,2493,2494],{},"createLogger()"," outside a framework:",[2443,2497,2498,2505,2521,2529,2537],{},[1194,2499,2500,2450,2502],{},[587,2501,589],{},[562,2503,2504],{},"createLogger({ jobId: 'sync-001' })",[1194,2506,2507,2450,2509,904,2511,904,2514,904,2517,2520],{},[587,2508,611],{},[562,2510,619],{},[562,2512,2513],{},"log.info()",[562,2515,2516],{},"log.warn()",[562,2518,2519],{},"log.error()"," over the operation",[1194,2522,2523,2525,2526,2528],{},[587,2524,635],{},": Manual ",[562,2527,644],{}," call",[1194,2530,2531,2533,2534],{},[587,2532,654],{},": Head sampling applies based on computed level. Tail sampling via ",[562,2535,2536],{},"initLogger({ sampling: { keep: [...] } })",[1194,2538,2539,2466,2541,2543],{},[587,2540,684],{},[562,2542,2469],{}," was configured, the event is sent",[758,2545,2548],{"className":760,"code":2546,"filename":2547,"language":763,"meta":764,"style":764},"import { initLogger, createLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({\n  env: { service: 'worker' },\n  drain: createAxiomDrain(),\n  sampling: { rates: { info: 10 } },\n})\n\nconst log = createLogger({ task: 'migrate' })\nlog.set({ records: 500, status: 'complete' })\nlog.emit()\n","scripts\u002Fmigrate.ts",[562,2549,2550,2574,2592,2596,2605,2628,2641,2666,2672,2676,2706,2743],{"__ignoreMap":764},[768,2551,2552,2554,2556,2559,2561,2564,2566,2568,2570,2572],{"class":770,"line":771},[768,2553,972],{"class":774},[768,2555,975],{"class":789},[768,2557,2558],{"class":785}," initLogger",[768,2560,1073],{"class":789},[768,2562,2563],{"class":785}," createLogger",[768,2565,981],{"class":789},[768,2567,984],{"class":774},[768,2569,987],{"class":789},[768,2571,990],{"class":809},[768,2573,993],{"class":789},[768,2575,2576,2578,2580,2582,2584,2586,2588,2590],{"class":770,"line":793},[768,2577,972],{"class":774},[768,2579,975],{"class":789},[768,2581,2165],{"class":785},[768,2583,981],{"class":789},[768,2585,984],{"class":774},[768,2587,987],{"class":789},[768,2589,2174],{"class":809},[768,2591,993],{"class":789},[768,2593,2594],{"class":770,"line":821},[768,2595,999],{"emptyLinePlaceholder":998},[768,2597,2598,2601,2603],{"class":770,"line":832},[768,2599,2600],{"class":781},"initLogger",[768,2602,786],{"class":785},[768,2604,790],{"class":789},[768,2606,2607,2610,2612,2614,2617,2619,2621,2624,2626],{"class":770,"line":853},[768,2608,2609],{"class":796},"  env",[768,2611,800],{"class":789},[768,2613,975],{"class":789},[768,2615,2616],{"class":796}," service",[768,2618,800],{"class":789},[768,2620,987],{"class":789},[768,2622,2623],{"class":809},"worker",[768,2625,806],{"class":789},[768,2627,1582],{"class":789},[768,2629,2630,2633,2635,2637,2639],{"class":770,"line":859},[768,2631,2632],{"class":796},"  drain",[768,2634,800],{"class":789},[768,2636,2165],{"class":781},[768,2638,2043],{"class":785},[768,2640,818],{"class":789},[768,2642,2643,2645,2647,2649,2652,2654,2656,2658,2660,2662,2664],{"class":770,"line":1094},[768,2644,1270],{"class":796},[768,2646,800],{"class":789},[768,2648,975],{"class":789},[768,2650,2651],{"class":796}," rates",[768,2653,800],{"class":789},[768,2655,975],{"class":789},[768,2657,1554],{"class":796},[768,2659,800],{"class":789},[768,2661,1559],{"class":1297},[768,2663,981],{"class":789},[768,2665,1582],{"class":789},[768,2667,2668,2670],{"class":770,"line":1099},[768,2669,862],{"class":789},[768,2671,865],{"class":785},[768,2673,2674],{"class":770,"line":1122},[768,2675,999],{"emptyLinePlaceholder":998},[768,2677,2678,2680,2682,2684,2686,2688,2690,2693,2695,2697,2700,2702,2704],{"class":770,"line":1789},[768,2679,1005],{"class":1004},[768,2681,1008],{"class":785},[768,2683,1011],{"class":789},[768,2685,2563],{"class":781},[768,2687,786],{"class":785},[768,2689,1051],{"class":789},[768,2691,2692],{"class":796}," task",[768,2694,800],{"class":789},[768,2696,987],{"class":789},[768,2698,2699],{"class":809},"migrate",[768,2701,806],{"class":789},[768,2703,981],{"class":789},[768,2705,865],{"class":785},[768,2707,2708,2710,2712,2714,2716,2718,2721,2723,2726,2728,2730,2732,2734,2737,2739,2741],{"class":770,"line":1833},[768,2709,564],{"class":785},[768,2711,1044],{"class":789},[768,2713,706],{"class":781},[768,2715,786],{"class":785},[768,2717,1051],{"class":789},[768,2719,2720],{"class":796}," records",[768,2722,800],{"class":789},[768,2724,2725],{"class":1297}," 500",[768,2727,1073],{"class":789},[768,2729,1312],{"class":796},[768,2731,800],{"class":789},[768,2733,987],{"class":789},[768,2735,2736],{"class":809},"complete",[768,2738,806],{"class":789},[768,2740,981],{"class":789},[768,2742,865],{"class":785},[768,2744,2745,2747,2749,2751],{"class":770,"line":1875},[768,2746,564],{"class":785},[768,2748,1044],{"class":789},[768,2750,698],{"class":781},[768,2752,2753],{"class":785},"()\n",[542,2755,2757],{"id":2756},"next-steps","Next Steps",[1191,2759,2760,2765,2770,2775],{},[1194,2761,2762,2764],{},[724,2763,44],{"href":45}," - Design effective wide events",[1194,2766,2767,2769],{},[724,2768,59],{"href":60}," - Configure head and tail sampling",[1194,2771,2772,2774],{},[724,2773,133],{"href":138}," - Send events to external platforms",[1194,2776,2777,2779],{},[724,2778,428],{"href":429}," - Add derived context automatically",[2781,2782,2783],"style",{},"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}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}",{"title":764,"searchDepth":793,"depth":793,"links":2785},[2786,2787,2801,2802,2803,2804,2805],{"id":544,"depth":793,"text":545},{"id":731,"depth":793,"text":732,"children":2788},[2789,2790,2791,2792,2793,2795,2796,2797,2799],{"id":739,"depth":821,"text":740},{"id":868,"depth":821,"text":869},{"id":954,"depth":821,"text":955},{"id":1185,"depth":821,"text":1186},{"id":1235,"depth":821,"text":2794},"5. Tail Sampling (evlog:emit:keep)",{"id":1510,"depth":821,"text":1511},{"id":1619,"depth":821,"text":1620},{"id":1883,"depth":821,"text":2798},"8. Enrich (evlog:enrich)",{"id":2136,"depth":821,"text":2800},"9. Drain (evlog:drain)",{"id":2243,"depth":793,"text":2244},{"id":2312,"depth":793,"text":2313},{"id":2434,"depth":793,"text":2435},{"id":2487,"depth":793,"text":2488},{"id":2756,"depth":793,"text":2757},"An evlog event from creation to drain, across all three modes, through sampling, enrichment, and delivery.","md",[2809,2812],{"label":44,"icon":47,"to":45,"color":2810,"variant":2811},"neutral","subtle",{"label":59,"icon":480,"to":60,"color":2810,"variant":2811},{},{"icon":57},{"title":54,"description":2806},"59vZ-uM8kSlAN7buq0Gl4RUaMVET9YhXwrZ9ISRIzVE",[2818,2820],{"title":49,"path":50,"stem":51,"description":2819,"icon":52,"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.",{"title":59,"path":60,"stem":61,"description":2821,"children":-1},"[object Object]",1786793883915]