[{"data":1,"prerenderedAt":2821},["ShallowReactive",2],{"navigation_docs":3,"-learn-lifecycle":528,"-learn-lifecycle-surround":2816},[4,29,76,122,304,435,496],{"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,431],{"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},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers",{"title":432,"path":433,"stem":434},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve",{"title":436,"path":437,"stem":438,"children":439,"page":28},"Extend","\u002Fextend","6.extend",[440,444,449,454,458,463,467,471,476,481,486,491],{"title":128,"path":441,"stem":442,"icon":443},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":445,"path":446,"stem":447,"icon":448},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":450,"path":451,"stem":452,"icon":453},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":455,"path":456,"stem":457,"icon":448},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":459,"path":460,"stem":461,"icon":462},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":403,"path":464,"stem":465,"icon":466},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":468,"path":469,"stem":470},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":472,"path":473,"stem":474,"icon":475},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers","i-lucide-sparkles",{"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,"icon":495},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":424,"path":497,"stem":498,"children":499,"page":28},"\u002Freference","7.reference",[500,504,507,512,516,520,524],{"title":501,"path":502,"stem":503},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration",{"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},"evlog vs pino, winston, consola","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers",{"title":521,"path":522,"stem":523,"icon":475},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":525,"path":526,"stem":527},"Log cost","\u002Freference\u002Fcost","7.reference\u002F7.cost",{"id":529,"title":54,"body":530,"description":2805,"extension":2806,"links":2807,"meta":2812,"navigation":2813,"path":55,"seo":2814,"stem":56,"__hash__":2815},"docs\u002F2.learn\u002F4.lifecycle.md",{"type":531,"value":532,"toc":2783},"minimark",[533,537,540,545,690,728,732,735,740,750,756,865,869,876,945,951,955,961,1176,1182,1186,1189,1229,1232,1239,1251,1359,1365,1497,1507,1511,1514,1521,1590,1613,1616,1620,1626,1877,1880,1887,1890,1970,2126,2133,2140,2150,2233,2240,2244,2309,2313,2320,2431,2435,2441,2474,2484,2488,2495,2543,2753,2757,2779],[534,535,536],"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.",[538,539],"lifecycle-flow",{},[541,542,544],"h2",{"id":543},"overview-by-mode","Overview by Mode",[546,547,548,577],"table",{},[549,550,551],"thead",{},[552,553,554,558,565,574],"tr",{},[555,556,557],"th",{},"Stage",[555,559,560,564],{},[561,562,563],"code",{},"log"," (simple)",[555,566,567,570,571],{},[561,568,569],{},"createLogger"," \u002F ",[561,572,573],{},"createRequestLogger",[555,575,576],{},"Framework middleware",[578,579,580,604,628,647,662,677],"tbody",{},[552,581,582,589,592,601],{},[583,584,585],"td",{},[586,587,588],"strong",{},"Create",[583,590,591],{},"Implicit per call",[583,593,594,597,598],{},[561,595,596],{},"createLogger({...})"," or ",[561,599,600],{},"createRequestLogger({...})",[583,602,603],{},"Auto on request start",[552,605,606,611,614,620],{},[583,607,608],{},[586,609,610],{},"Accumulate",[583,612,613],{},"N\u002FA (single call)",[583,615,616,619],{},[561,617,618],{},"log.set()"," multiple times",[583,621,622,624,625],{},[561,623,618],{}," via ",[561,626,627],{},"useLogger(event)",[552,629,630,635,638,644],{},[583,631,632],{},[586,633,634],{},"Emit",[583,636,637],{},"Immediate",[583,639,640,641],{},"Manual ",[561,642,643],{},"log.emit()",[583,645,646],{},"Auto on response end",[552,648,649,654,657,660],{},[583,650,651],{},[586,652,653],{},"Sample",[583,655,656],{},"Head sampling only",[583,658,659],{},"Head + tail sampling",[583,661,659],{},[552,663,664,669,672,674],{},[583,665,666],{},[586,667,668],{},"Enrich",[583,670,671],{},"Via global drain",[583,673,671],{},[583,675,676],{},"Via hooks or callbacks",[552,678,679,684,686,688],{},[583,680,681],{},[586,682,683],{},"Drain",[583,685,671],{},[583,687,671],{},[583,689,676],{},[534,691,692,693,698,699,702,703,570,706,570,709,570,712,715,716,721,722,727],{},"After ",[586,694,695],{},[561,696,697],{},"emit"," (including when sampling returns no output), the request logger is ",[586,700,701],{},"sealed",": later ",[561,704,705],{},"set",[561,707,708],{},"error",[561,710,711],{},"info",[561,713,714],{},"warn"," calls are ignored with a console warning. For background work that needs its own event, use ",[586,717,718],{},[561,719,720],{},"log.fork()"," where your integration supports it. See ",[723,724,726],"a",{"href":725},"\u002Flearn\u002Fwide-events#after-emit-sealing-and-background-work","After emit"," in Wide events.",[541,729,731],{"id":730},"request-logging-step-by-step","Request Logging — Step by Step",[534,733,734],{},"For framework-managed request logging, every request walks the pipeline above. Each stage is detailed below.",[736,737,739],"h3",{"id":738},"_1-route-filtering","1. Route Filtering",[534,741,742,743,570,746,749],{},"When a request arrives, evlog checks whether the path matches the configured ",[561,744,745],{},"include",[561,747,748],{},"exclude"," patterns. If the route is excluded, no logger is created and the request proceeds without any logging overhead.",[534,751,752,753,755],{},"By default, all routes are logged. Use ",[561,754,745],{}," to restrict logging to specific patterns:",[757,758,764],"pre",{"className":759,"code":760,"filename":761,"language":762,"meta":763,"style":763},"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","",[561,765,766,790,818,829,850,856],{"__ignoreMap":763},[767,768,771,775,778,782,786],"span",{"class":769,"line":770},"line",1,[767,772,774],{"class":773},"s7zQu","export",[767,776,777],{"class":773}," default",[767,779,781],{"class":780},"s2Zo4"," defineNuxtConfig",[767,783,785],{"class":784},"sTEyZ","(",[767,787,789],{"class":788},"sMK4o","{\n",[767,791,793,797,800,803,806,810,812,815],{"class":769,"line":792},2,[767,794,796],{"class":795},"swJcz","  modules",[767,798,799],{"class":788},":",[767,801,802],{"class":784}," [",[767,804,805],{"class":788},"'",[767,807,809],{"class":808},"sfazB","evlog\u002Fnuxt",[767,811,805],{"class":788},[767,813,814],{"class":784},"]",[767,816,817],{"class":788},",\n",[767,819,821,824,826],{"class":769,"line":820},3,[767,822,823],{"class":795},"  evlog",[767,825,799],{"class":788},[767,827,828],{"class":788}," {\n",[767,830,832,835,837,839,841,844,846,848],{"class":769,"line":831},4,[767,833,834],{"class":795},"    include",[767,836,799],{"class":788},[767,838,802],{"class":784},[767,840,805],{"class":788},[767,842,843],{"class":808},"\u002Fapi\u002F**",[767,845,805],{"class":788},[767,847,814],{"class":784},[767,849,817],{"class":788},[767,851,853],{"class":769,"line":852},5,[767,854,855],{"class":788},"  },\n",[767,857,859,862],{"class":769,"line":858},6,[767,860,861],{"class":788},"}",[767,863,864],{"class":784},")\n",[736,866,868],{"id":867},"_2-logger-creation","2. Logger Creation",[534,870,871,872,875],{},"For matched routes, evlog creates a ",[561,873,874],{},"RequestLogger"," and attaches it to the request context. The logger is pre-populated with:",[546,877,878,888],{},[549,879,880],{},[552,881,882,885],{},[555,883,884],{},"Field",[555,886,887],{},"Source",[578,889,890,908,918,932],{},[552,891,892,897],{},[583,893,894],{},[561,895,896],{},"method",[583,898,899,900,903,904,907],{},"HTTP method (",[561,901,902],{},"GET",", ",[561,905,906],{},"POST",", ...)",[552,909,910,915],{},[583,911,912],{},[561,913,914],{},"path",[583,916,917],{},"Request path",[552,919,920,925],{},[583,921,922],{},[561,923,924],{},"requestId",[583,926,927,928,931],{},"Auto-generated UUID (or ",[561,929,930],{},"cf-ray"," on Cloudflare)",[552,933,934,939],{},[583,935,936],{},[561,937,938],{},"startTime",[583,940,941,944],{},[561,942,943],{},"Date.now()"," for duration calculation",[534,946,947,948,950],{},"The logger is stored on the event context. ",[561,949,627],{}," is a shortcut to retrieve it, it doesn't create a new logger.",[736,952,954],{"id":953},"_3-context-accumulation","3. Context Accumulation",[534,956,957,958,960],{},"During the handler, you call ",[561,959,618],{}," to attach context. Each call deep-merges into the existing context, so you can call it as many times as needed:",[757,962,965],{"className":759,"code":963,"filename":964,"language":762,"meta":763,"style":763},"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",[561,966,967,993,999,1016,1020,1037,1091,1096,1119],{"__ignoreMap":763},[767,968,969,972,975,978,981,984,987,990],{"class":769,"line":770},[767,970,971],{"class":773},"import",[767,973,974],{"class":788}," {",[767,976,977],{"class":784}," useLogger",[767,979,980],{"class":788}," }",[767,982,983],{"class":773}," from",[767,985,986],{"class":788}," '",[767,988,989],{"class":808},"evlog",[767,991,992],{"class":788},"'\n",[767,994,995],{"class":769,"line":792},[767,996,998],{"emptyLinePlaceholder":997},true,"\n",[767,1000,1001,1005,1008,1011,1013],{"class":769,"line":820},[767,1002,1004],{"class":1003},"spNyl","const",[767,1006,1007],{"class":784}," log ",[767,1009,1010],{"class":788},"=",[767,1012,977],{"class":780},[767,1014,1015],{"class":784},"(event)\n",[767,1017,1018],{"class":769,"line":831},[767,1019,998],{"emptyLinePlaceholder":997},[767,1021,1022,1024,1027,1029,1032,1035],{"class":769,"line":852},[767,1023,1004],{"class":1003},[767,1025,1026],{"class":784}," user ",[767,1028,1010],{"class":788},[767,1030,1031],{"class":773}," await",[767,1033,1034],{"class":780}," getUser",[767,1036,1015],{"class":784},[767,1038,1039,1041,1044,1046,1048,1051,1054,1056,1058,1061,1063,1065,1067,1070,1073,1076,1078,1080,1082,1085,1087,1089],{"class":769,"line":858},[767,1040,563],{"class":784},[767,1042,1043],{"class":788},".",[767,1045,705],{"class":780},[767,1047,785],{"class":784},[767,1049,1050],{"class":788},"{",[767,1052,1053],{"class":795}," user",[767,1055,799],{"class":788},[767,1057,974],{"class":788},[767,1059,1060],{"class":795}," id",[767,1062,799],{"class":788},[767,1064,1053],{"class":784},[767,1066,1043],{"class":788},[767,1068,1069],{"class":784},"id",[767,1071,1072],{"class":788},",",[767,1074,1075],{"class":795}," plan",[767,1077,799],{"class":788},[767,1079,1053],{"class":784},[767,1081,1043],{"class":788},[767,1083,1084],{"class":784},"plan ",[767,1086,861],{"class":788},[767,1088,980],{"class":788},[767,1090,864],{"class":784},[767,1092,1094],{"class":769,"line":1093},7,[767,1095,998],{"emptyLinePlaceholder":997},[767,1097,1099,1101,1104,1106,1108,1111,1114,1116],{"class":769,"line":1098},8,[767,1100,1004],{"class":1003},[767,1102,1103],{"class":784}," cart ",[767,1105,1010],{"class":788},[767,1107,1031],{"class":773},[767,1109,1110],{"class":780}," getCart",[767,1112,1113],{"class":784},"(user",[767,1115,1043],{"class":788},[767,1117,1118],{"class":784},"id)\n",[767,1120,1122,1124,1126,1128,1130,1132,1135,1137,1139,1142,1144,1146,1148,1151,1153,1156,1158,1161,1163,1165,1167,1170,1172,1174],{"class":769,"line":1121},9,[767,1123,563],{"class":784},[767,1125,1043],{"class":788},[767,1127,705],{"class":780},[767,1129,785],{"class":784},[767,1131,1050],{"class":788},[767,1133,1134],{"class":795}," cart",[767,1136,799],{"class":788},[767,1138,974],{"class":788},[767,1140,1141],{"class":795}," items",[767,1143,799],{"class":788},[767,1145,1134],{"class":784},[767,1147,1043],{"class":788},[767,1149,1150],{"class":784},"items",[767,1152,1043],{"class":788},[767,1154,1155],{"class":784},"length",[767,1157,1072],{"class":788},[767,1159,1160],{"class":795}," total",[767,1162,799],{"class":788},[767,1164,1134],{"class":784},[767,1166,1043],{"class":788},[767,1168,1169],{"class":784},"total ",[767,1171,861],{"class":788},[767,1173,980],{"class":788},[767,1175,864],{"class":784},[534,1177,1178,1179,1181],{},"If an error is thrown, evlog's ",[561,1180,708],{}," hook captures it automatically and records it on the logger with the status code.",[736,1183,1185],{"id":1184},"_4-request-end","4. Request End",[534,1187,1188],{},"When the response is sent (or an error is thrown), evlog computes:",[1190,1191,1192,1206,1215],"ul",{},[1193,1194,1195,1198,1199,570,1202,1205],"li",{},[586,1196,1197],{},"Status code"," from the response (or from the error's ",[561,1200,1201],{},"status",[561,1203,1204],{},"statusCode",")",[1193,1207,1208,1211,1212],{},[586,1209,1210],{},"Duration"," from ",[561,1213,1214],{},"Date.now() - startTime",[1193,1216,1217,1220,1221,1223,1224,1226,1227],{},[586,1218,1219],{},"Level"," - ",[561,1222,708],{}," if an error was recorded, ",[561,1225,714],{}," if status >= 400, otherwise ",[561,1228,711],{},[534,1230,1231],{},"If an error triggered the emit, the request is marked as already emitted to prevent double-emission in the response hook.",[736,1233,1235,1236,1205],{"id":1234},"_5-tail-sampling-evlogemitkeep","5. Tail Sampling (",[561,1237,1238],{},"evlog:emit:keep",[534,1240,1241,1242,1245,1246,1250],{},"Before the event is sampled, evlog evaluates ",[586,1243,1244],{},"tail sampling"," rules. These run ",[1247,1248,1249],"em",{},"after"," the request completes, so they can inspect the outcome:",[757,1252,1254],{"className":759,"code":1253,"filename":761,"language":762,"meta":763,"style":763},"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",[561,1255,1256,1265,1274,1284,1305,1322,1343,1350,1354],{"__ignoreMap":763},[767,1257,1258,1261,1263],{"class":769,"line":770},[767,1259,989],{"class":1260},"sBMFI",[767,1262,799],{"class":788},[767,1264,828],{"class":788},[767,1266,1267,1270,1272],{"class":769,"line":792},[767,1268,1269],{"class":1260},"  sampling",[767,1271,799],{"class":788},[767,1273,828],{"class":788},[767,1275,1276,1279,1281],{"class":769,"line":820},[767,1277,1278],{"class":1260},"    keep",[767,1280,799],{"class":788},[767,1282,1283],{"class":795}," [\n",[767,1285,1286,1289,1292,1294,1298,1301],{"class":769,"line":831},[767,1287,1288],{"class":788},"      {",[767,1290,1291],{"class":795}," duration",[767,1293,799],{"class":788},[767,1295,1297],{"class":1296},"sbssI"," 1000",[767,1299,1300],{"class":788}," },",[767,1302,1304],{"class":1303},"sHwdD","          \u002F\u002F slow requests\n",[767,1306,1307,1309,1312,1314,1317,1319],{"class":769,"line":852},[767,1308,1288],{"class":788},[767,1310,1311],{"class":795}," status",[767,1313,799],{"class":788},[767,1315,1316],{"class":1296}," 400",[767,1318,1300],{"class":788},[767,1320,1321],{"class":1303},"             \u002F\u002F client\u002Fserver errors\n",[767,1323,1324,1326,1329,1331,1333,1336,1338,1340],{"class":769,"line":858},[767,1325,1288],{"class":788},[767,1327,1328],{"class":795}," path",[767,1330,799],{"class":788},[767,1332,986],{"class":788},[767,1334,1335],{"class":808},"\u002Fapi\u002Fcritical\u002F**",[767,1337,805],{"class":788},[767,1339,1300],{"class":788},[767,1341,1342],{"class":1303}," \u002F\u002F critical paths\n",[767,1344,1345,1348],{"class":769,"line":1093},[767,1346,1347],{"class":795},"    ]",[767,1349,817],{"class":788},[767,1351,1352],{"class":769,"line":1098},[767,1353,855],{"class":788},[767,1355,1356],{"class":769,"line":1121},[767,1357,1358],{"class":788},"}\n",[534,1360,1361,1362,1364],{},"The ",[561,1363,1238],{}," hook also fires, letting you force-keep based on custom business logic:",[757,1366,1369],{"className":759,"code":1367,"filename":1368,"language":762,"meta":763,"style":763},"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",[561,1370,1371,1395,1432,1462,1479,1484,1491],{"__ignoreMap":763},[767,1372,1373,1375,1377,1380,1382,1384,1388,1390,1393],{"class":769,"line":770},[767,1374,774],{"class":773},[767,1376,777],{"class":773},[767,1378,1379],{"class":780}," defineNitroPlugin",[767,1381,785],{"class":784},[767,1383,785],{"class":788},[767,1385,1387],{"class":1386},"sHdIc","nitroApp",[767,1389,1205],{"class":788},[767,1391,1392],{"class":1003}," =>",[767,1394,828],{"class":788},[767,1396,1397,1400,1402,1405,1407,1410,1412,1414,1416,1418,1420,1423,1426,1428,1430],{"class":769,"line":792},[767,1398,1399],{"class":784},"  nitroApp",[767,1401,1043],{"class":788},[767,1403,1404],{"class":784},"hooks",[767,1406,1043],{"class":788},[767,1408,1409],{"class":780},"hook",[767,1411,785],{"class":795},[767,1413,805],{"class":788},[767,1415,1238],{"class":808},[767,1417,805],{"class":788},[767,1419,1072],{"class":788},[767,1421,1422],{"class":788}," (",[767,1424,1425],{"class":1386},"ctx",[767,1427,1205],{"class":788},[767,1429,1392],{"class":1003},[767,1431,828],{"class":788},[767,1433,1434,1437,1439,1441,1443,1446,1448,1451,1454,1457,1460],{"class":769,"line":820},[767,1435,1436],{"class":773},"    if",[767,1438,1422],{"class":795},[767,1440,1425],{"class":784},[767,1442,1043],{"class":788},[767,1444,1445],{"class":784},"context",[767,1447,1043],{"class":788},[767,1449,1450],{"class":784},"user",[767,1452,1453],{"class":788},"?.",[767,1455,1456],{"class":784},"premium",[767,1458,1459],{"class":795},") ",[767,1461,789],{"class":788},[767,1463,1464,1467,1469,1472,1475],{"class":769,"line":831},[767,1465,1466],{"class":784},"      ctx",[767,1468,1043],{"class":788},[767,1470,1471],{"class":784},"shouldKeep",[767,1473,1474],{"class":788}," =",[767,1476,1478],{"class":1477},"sfNiH"," true\n",[767,1480,1481],{"class":769,"line":852},[767,1482,1483],{"class":788},"    }\n",[767,1485,1486,1489],{"class":769,"line":858},[767,1487,1488],{"class":788},"  }",[767,1490,864],{"class":795},[767,1492,1493,1495],{"class":769,"line":1093},[767,1494,861],{"class":788},[767,1496,864],{"class":784},[534,1498,1499,1500,1503,1504,1043],{},"If any rule or hook sets ",[561,1501,1502],{},"shouldKeep = true",", the event ",[586,1505,1506],{},"bypasses head sampling entirely",[736,1508,1510],{"id":1509},"_6-head-sampling","6. Head Sampling",[534,1512,1513],{},"If the event wasn't force-kept by tail sampling, head sampling applies. This is a random coin flip per log level.",[534,1515,1516,1517,1520],{},"By default, all levels are kept at 100% (no sampling). Configure ",[561,1518,1519],{},"sampling.rates"," to reduce volume in production:",[757,1522,1524],{"className":759,"code":1523,"filename":761,"language":762,"meta":763,"style":763},"evlog: {\n  sampling: {\n    rates: { info: 10, warn: 50, debug: 0 },\n  },\n}\n",[561,1525,1526,1534,1542,1582,1586],{"__ignoreMap":763},[767,1527,1528,1530,1532],{"class":769,"line":770},[767,1529,989],{"class":1260},[767,1531,799],{"class":788},[767,1533,828],{"class":788},[767,1535,1536,1538,1540],{"class":769,"line":792},[767,1537,1269],{"class":1260},[767,1539,799],{"class":788},[767,1541,828],{"class":788},[767,1543,1544,1547,1549,1551,1554,1556,1559,1561,1564,1566,1569,1571,1574,1576,1579],{"class":769,"line":820},[767,1545,1546],{"class":1260},"    rates",[767,1548,799],{"class":788},[767,1550,974],{"class":788},[767,1552,1553],{"class":1260}," info",[767,1555,799],{"class":788},[767,1557,1558],{"class":1296}," 10",[767,1560,1072],{"class":788},[767,1562,1563],{"class":1260}," warn",[767,1565,799],{"class":788},[767,1567,1568],{"class":1296}," 50",[767,1570,1072],{"class":788},[767,1572,1573],{"class":1260}," debug",[767,1575,799],{"class":788},[767,1577,1578],{"class":1296}," 0",[767,1580,1581],{"class":788}," },\n",[767,1583,1584],{"class":769,"line":831},[767,1585,855],{"class":788},[767,1587,1588],{"class":769,"line":852},[767,1589,1358],{"class":788},[1190,1591,1592,1598,1604],{},[1193,1593,1594,1597],{},[561,1595,1596],{},"info: 10"," - keep 10% of info-level events",[1193,1599,1600,1603],{},[561,1601,1602],{},"warn: 50"," - keep 50% of warnings",[1193,1605,1606,1608,1609,1612],{},[561,1607,708],{}," defaults to ",[586,1610,1611],{},"100%"," (never sampled out, even if you set a rate)",[534,1614,1615],{},"If the event is sampled out, processing stops entirely: no console output, no enrichment, no drain.",[736,1617,1619],{"id":1618},"_7-emit","7. Emit",[534,1621,1361,1622,1625],{},[561,1623,1624],{},"WideEvent"," object is built from the accumulated context:",[757,1627,1631],{"className":1628,"code":1629,"filename":1624,"language":1630,"meta":763,"style":763},"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",[561,1632,1633,1637,1660,1679,1699,1717,1736,1755,1771,1786,1830,1872],{"__ignoreMap":763},[767,1634,1635],{"class":769,"line":770},[767,1636,789],{"class":788},[767,1638,1639,1642,1645,1648,1650,1653,1656,1658],{"class":769,"line":792},[767,1640,1641],{"class":788},"  \"",[767,1643,1644],{"class":1003},"timestamp",[767,1646,1647],{"class":788},"\"",[767,1649,799],{"class":788},[767,1651,1652],{"class":788}," \"",[767,1654,1655],{"class":808},"2026-01-15T10:30:00.000Z",[767,1657,1647],{"class":788},[767,1659,817],{"class":788},[767,1661,1662,1664,1667,1669,1671,1673,1675,1677],{"class":769,"line":820},[767,1663,1641],{"class":788},[767,1665,1666],{"class":1003},"level",[767,1668,1647],{"class":788},[767,1670,799],{"class":788},[767,1672,1652],{"class":788},[767,1674,711],{"class":808},[767,1676,1647],{"class":788},[767,1678,817],{"class":788},[767,1680,1681,1683,1686,1688,1690,1692,1695,1697],{"class":769,"line":831},[767,1682,1641],{"class":788},[767,1684,1685],{"class":1003},"service",[767,1687,1647],{"class":788},[767,1689,799],{"class":788},[767,1691,1652],{"class":788},[767,1693,1694],{"class":808},"my-app",[767,1696,1647],{"class":788},[767,1698,817],{"class":788},[767,1700,1701,1703,1705,1707,1709,1711,1713,1715],{"class":769,"line":852},[767,1702,1641],{"class":788},[767,1704,896],{"class":1003},[767,1706,1647],{"class":788},[767,1708,799],{"class":788},[767,1710,1652],{"class":788},[767,1712,906],{"class":808},[767,1714,1647],{"class":788},[767,1716,817],{"class":788},[767,1718,1719,1721,1723,1725,1727,1729,1732,1734],{"class":769,"line":858},[767,1720,1641],{"class":788},[767,1722,914],{"class":1003},[767,1724,1647],{"class":788},[767,1726,799],{"class":788},[767,1728,1652],{"class":788},[767,1730,1731],{"class":808},"\u002Fapi\u002Fcheckout",[767,1733,1647],{"class":788},[767,1735,817],{"class":788},[767,1737,1738,1740,1742,1744,1746,1748,1751,1753],{"class":769,"line":1093},[767,1739,1641],{"class":788},[767,1741,924],{"class":1003},[767,1743,1647],{"class":788},[767,1745,799],{"class":788},[767,1747,1652],{"class":788},[767,1749,1750],{"class":808},"abc-123",[767,1752,1647],{"class":788},[767,1754,817],{"class":788},[767,1756,1757,1759,1762,1764,1766,1769],{"class":769,"line":1098},[767,1758,1641],{"class":788},[767,1760,1761],{"class":1003},"duration",[767,1763,1647],{"class":788},[767,1765,799],{"class":788},[767,1767,1768],{"class":1296}," 234",[767,1770,817],{"class":788},[767,1772,1773,1775,1777,1779,1781,1784],{"class":769,"line":1121},[767,1774,1641],{"class":788},[767,1776,1201],{"class":1003},[767,1778,1647],{"class":788},[767,1780,799],{"class":788},[767,1782,1783],{"class":1296}," 200",[767,1785,817],{"class":788},[767,1787,1789,1791,1793,1795,1797,1799,1801,1803,1805,1807,1810,1812,1814,1817,1819,1821,1823,1826,1828],{"class":769,"line":1788},10,[767,1790,1641],{"class":788},[767,1792,1450],{"class":1003},[767,1794,1647],{"class":788},[767,1796,799],{"class":788},[767,1798,974],{"class":788},[767,1800,1652],{"class":788},[767,1802,1069],{"class":1260},[767,1804,1647],{"class":788},[767,1806,799],{"class":788},[767,1808,1809],{"class":1296}," 1",[767,1811,1072],{"class":788},[767,1813,1652],{"class":788},[767,1815,1816],{"class":1260},"plan",[767,1818,1647],{"class":788},[767,1820,799],{"class":788},[767,1822,1652],{"class":788},[767,1824,1825],{"class":808},"pro",[767,1827,1647],{"class":788},[767,1829,1581],{"class":788},[767,1831,1833,1835,1838,1840,1842,1844,1846,1848,1850,1852,1855,1857,1859,1862,1864,1866,1869],{"class":769,"line":1832},11,[767,1834,1641],{"class":788},[767,1836,1837],{"class":1003},"cart",[767,1839,1647],{"class":788},[767,1841,799],{"class":788},[767,1843,974],{"class":788},[767,1845,1652],{"class":788},[767,1847,1150],{"class":1260},[767,1849,1647],{"class":788},[767,1851,799],{"class":788},[767,1853,1854],{"class":1296}," 3",[767,1856,1072],{"class":788},[767,1858,1652],{"class":788},[767,1860,1861],{"class":1260},"total",[767,1863,1647],{"class":788},[767,1865,799],{"class":788},[767,1867,1868],{"class":1296}," 9999",[767,1870,1871],{"class":788}," }\n",[767,1873,1875],{"class":769,"line":1874},12,[767,1876,1358],{"class":788},[534,1878,1879],{},"The event is printed to the console, pretty-formatted in development and as JSON in production. This is the default behavior, no configuration needed.",[736,1881,1883,1884,1205],{"id":1882},"_8-enrich-evlogenrich","8. Enrich (",[561,1885,1886],{},"evlog:enrich",[534,1888,1889],{},"After emission, enrichers add derived context to the event. Built-in enrichers extract data from request headers:",[546,1891,1892,1904],{},[549,1893,1894],{},[552,1895,1896,1899,1902],{},[555,1897,1898],{},"Enricher",[555,1900,1901],{},"Adds",[555,1903,887],{},[578,1905,1906,1923,1937,1954],{},[552,1907,1908,1911,1917],{},[583,1909,1910],{},"User Agent",[583,1912,1913,1916],{},[561,1914,1915],{},"userAgent"," (browser, OS, device)",[583,1918,1919,1922],{},[561,1920,1921],{},"User-Agent"," header",[552,1924,1925,1928,1934],{},[583,1926,1927],{},"Geo",[583,1929,1930,1933],{},[561,1931,1932],{},"geo"," (country, region, city)",[583,1935,1936],{},"Platform headers (Vercel, Cloudflare)",[552,1938,1939,1942,1948],{},[583,1940,1941],{},"Request Size",[583,1943,1944,1947],{},[561,1945,1946],{},"requestSize"," (request\u002Fresponse bytes)",[583,1949,1950,1953],{},[561,1951,1952],{},"Content-Length"," headers",[552,1955,1956,1959,1965],{},[583,1957,1958],{},"Trace Context",[583,1960,1961,1964],{},[561,1962,1963],{},"traceContext"," (traceId, spanId)",[583,1966,1967,1922],{},[561,1968,1969],{},"traceparent",[757,1971,1974],{"className":759,"code":1972,"filename":1973,"language":762,"meta":763,"style":763},"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",[561,1975,1976,2001,2005,2025,2050,2054,2086,2114,2120],{"__ignoreMap":763},[767,1977,1978,1980,1982,1985,1987,1990,1992,1994,1996,1999],{"class":769,"line":770},[767,1979,971],{"class":773},[767,1981,974],{"class":788},[767,1983,1984],{"class":784}," createUserAgentEnricher",[767,1986,1072],{"class":788},[767,1988,1989],{"class":784}," createGeoEnricher",[767,1991,980],{"class":788},[767,1993,983],{"class":773},[767,1995,986],{"class":788},[767,1997,1998],{"class":808},"evlog\u002Fenrichers",[767,2000,992],{"class":788},[767,2002,2003],{"class":769,"line":792},[767,2004,998],{"emptyLinePlaceholder":997},[767,2006,2007,2009,2011,2013,2015,2017,2019,2021,2023],{"class":769,"line":820},[767,2008,774],{"class":773},[767,2010,777],{"class":773},[767,2012,1379],{"class":780},[767,2014,785],{"class":784},[767,2016,785],{"class":788},[767,2018,1387],{"class":1386},[767,2020,1205],{"class":788},[767,2022,1392],{"class":1003},[767,2024,828],{"class":788},[767,2026,2027,2030,2033,2035,2037,2040,2043,2045,2047],{"class":769,"line":831},[767,2028,2029],{"class":1003},"  const",[767,2031,2032],{"class":784}," enrichers",[767,2034,1474],{"class":788},[767,2036,802],{"class":795},[767,2038,2039],{"class":780},"createUserAgentEnricher",[767,2041,2042],{"class":795},"()",[767,2044,1072],{"class":788},[767,2046,1989],{"class":780},[767,2048,2049],{"class":795},"()]\n",[767,2051,2052],{"class":769,"line":852},[767,2053,998],{"emptyLinePlaceholder":997},[767,2055,2056,2058,2060,2062,2064,2066,2068,2070,2072,2074,2076,2078,2080,2082,2084],{"class":769,"line":858},[767,2057,1399],{"class":784},[767,2059,1043],{"class":788},[767,2061,1404],{"class":784},[767,2063,1043],{"class":788},[767,2065,1409],{"class":780},[767,2067,785],{"class":795},[767,2069,805],{"class":788},[767,2071,1886],{"class":808},[767,2073,805],{"class":788},[767,2075,1072],{"class":788},[767,2077,1422],{"class":788},[767,2079,1425],{"class":1386},[767,2081,1205],{"class":788},[767,2083,1392],{"class":1003},[767,2085,828],{"class":788},[767,2087,2088,2091,2093,2095,2098,2101,2103,2105,2108,2110,2112],{"class":769,"line":1093},[767,2089,2090],{"class":773},"    for",[767,2092,1422],{"class":795},[767,2094,1004],{"class":1003},[767,2096,2097],{"class":784}," enricher",[767,2099,2100],{"class":788}," of",[767,2102,2032],{"class":784},[767,2104,1459],{"class":795},[767,2106,2107],{"class":780},"enricher",[767,2109,785],{"class":795},[767,2111,1425],{"class":784},[767,2113,864],{"class":795},[767,2115,2116,2118],{"class":769,"line":1098},[767,2117,1488],{"class":788},[767,2119,864],{"class":795},[767,2121,2122,2124],{"class":769,"line":1121},[767,2123,861],{"class":788},[767,2125,864],{"class":784},[534,2127,2128,2129,2132],{},"Enrichers receive the full ",[561,2130,2131],{},"EnrichContext"," with the mutable event, request metadata, safe headers, and response info.",[736,2134,2136,2137,1205],{"id":2135},"_9-drain-evlogdrain","9. Drain (",[561,2138,2139],{},"evlog:drain",[534,2141,2142,2143,2145,2146,2149],{},"The final step sends the enriched event to your observability platform. The ",[561,2144,2139],{}," hook receives a ",[561,2147,2148],{},"DrainContext"," with the complete event:",[757,2151,2154],{"className":759,"code":2152,"filename":2153,"language":762,"meta":763,"style":763},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createAxiomDrain())\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[561,2155,2156,2176,2180,2200,2227],{"__ignoreMap":763},[767,2157,2158,2160,2162,2165,2167,2169,2171,2174],{"class":769,"line":770},[767,2159,971],{"class":773},[767,2161,974],{"class":788},[767,2163,2164],{"class":784}," createAxiomDrain",[767,2166,980],{"class":788},[767,2168,983],{"class":773},[767,2170,986],{"class":788},[767,2172,2173],{"class":808},"evlog\u002Faxiom",[767,2175,992],{"class":788},[767,2177,2178],{"class":769,"line":792},[767,2179,998],{"emptyLinePlaceholder":997},[767,2181,2182,2184,2186,2188,2190,2192,2194,2196,2198],{"class":769,"line":820},[767,2183,774],{"class":773},[767,2185,777],{"class":773},[767,2187,1379],{"class":780},[767,2189,785],{"class":784},[767,2191,785],{"class":788},[767,2193,1387],{"class":1386},[767,2195,1205],{"class":788},[767,2197,1392],{"class":1003},[767,2199,828],{"class":788},[767,2201,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2224],{"class":769,"line":831},[767,2203,1399],{"class":784},[767,2205,1043],{"class":788},[767,2207,1404],{"class":784},[767,2209,1043],{"class":788},[767,2211,1409],{"class":780},[767,2213,785],{"class":795},[767,2215,805],{"class":788},[767,2217,2139],{"class":808},[767,2219,805],{"class":788},[767,2221,1072],{"class":788},[767,2223,2164],{"class":780},[767,2225,2226],{"class":795},"())\n",[767,2228,2229,2231],{"class":769,"line":852},[767,2230,861],{"class":788},[767,2232,864],{"class":784},[534,2234,2235,2236,2239],{},"On platforms with ",[561,2237,2238],{},"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.",[541,2241,2243],{"id":2242},"hook-execution-order","Hook Execution Order",[546,2245,2246,2262],{},[549,2247,2248],{},[552,2249,2250,2253,2256,2259],{},[555,2251,2252],{},"Order",[555,2254,2255],{},"Hook",[555,2257,2258],{},"When",[555,2260,2261],{},"Purpose",[578,2263,2264,2279,2294],{},[552,2265,2266,2269,2273,2276],{},[583,2267,2268],{},"1",[583,2270,2271],{},[561,2272,1238],{},[583,2274,2275],{},"After request ends, before sampling",[583,2277,2278],{},"Force-keep events based on outcome",[552,2280,2281,2284,2288,2291],{},[583,2282,2283],{},"2",[583,2285,2286],{},[561,2287,1886],{},[583,2289,2290],{},"After emit, before drain",[583,2292,2293],{},"Add derived context to the event",[552,2295,2296,2299,2303,2306],{},[583,2297,2298],{},"3",[583,2300,2301],{},[561,2302,2139],{},[583,2304,2305],{},"After enrichment",[583,2307,2308],{},"Send event to external services",[541,2310,2312],{"id":2311},"error-vs-success-path","Error vs Success Path",[534,2314,2315,2316,2319],{},"Both paths converge at the same emit\u002Fenrich\u002Fdrain pipeline. The only difference is ",[1247,2317,2318],{},"when"," the emit is triggered:",[546,2321,2322,2334],{},[549,2323,2324],{},[552,2325,2326,2328,2331],{},[555,2327],{},[555,2329,2330],{},"Success",[555,2332,2333],{},"Error",[578,2335,2336,2356,2374,2390,2411],{},[552,2337,2338,2343,2352],{},[583,2339,2340],{},[586,2341,2342],{},"Trigger",[583,2344,2345,570,2348,2351],{},[561,2346,2347],{},"afterResponse",[561,2349,2350],{},"response"," hook",[583,2353,2354,2351],{},[561,2355,708],{},[552,2357,2358,2362,2370],{},[583,2359,2360],{},[586,2361,1219],{},[583,2363,2364,2366,2367,2369],{},[561,2365,711],{}," (or ",[561,2368,714],{}," if status >= 400)",[583,2371,2372],{},[561,2373,708],{},[552,2375,2376,2381,2384],{},[583,2377,2378],{},[586,2379,2380],{},"Status",[583,2382,2383],{},"From response",[583,2385,2386,2387,2389],{},"From error's ",[561,2388,1201],{}," field (default 500)",[552,2391,2392,2397,2400],{},[583,2393,2394],{},[586,2395,2396],{},"Error context",[583,2398,2399],{},"None",[583,2401,2402,2404,2405,903,2408],{},[561,2403,708],{}," field with message, stack, ",[561,2406,2407],{},"why",[561,2409,2410],{},"fix",[552,2412,2413,2418,2425],{},[583,2414,2415],{},[586,2416,2417],{},"Double-emit guard",[583,2419,2420,2421,2424],{},"Checks ",[561,2422,2423],{},"_evlogEmitted"," flag",[583,2426,2427,2428],{},"Sets ",[561,2429,2430],{},"_evlogEmitted = true",[541,2432,2434],{"id":2433},"simple-logging-pipeline","Simple Logging Pipeline",[534,2436,2437,2438,2440],{},"When using the ",[561,2439,563],{}," singleton, the pipeline is shorter:",[2442,2443,2444,2456,2461],"ol",{},[1193,2445,2446,2449,2450,597,2453],{},[586,2447,2448],{},"Call",": ",[561,2451,2452],{},"log.info({ action: 'deploy' })",[561,2454,2455],{},"log.info('tag', 'message')",[1193,2457,2458,2460],{},[586,2459,634],{},": The event is built and printed immediately",[1193,2462,2463,2465,2466,2469,2470,2473],{},[586,2464,683],{},": If a global ",[561,2467,2468],{},"drain"," was configured via ",[561,2471,2472],{},"initLogger()",", the event is sent to external services",[534,2475,2476,2477,2479,2480,2483],{},"Tagged logs (",[561,2478,2455],{},") are console-only in pretty mode. Object-form logs (",[561,2481,2482],{},"log.info({ ... })",") always flow through the drain pipeline.",[541,2485,2487],{"id":2486},"standalone-wide-event-pipeline","Standalone Wide Event Pipeline",[534,2489,2490,2491,2494],{},"When using ",[561,2492,2493],{},"createLogger()"," outside a framework:",[2442,2496,2497,2504,2520,2528,2536],{},[1193,2498,2499,2449,2501],{},[586,2500,588],{},[561,2502,2503],{},"createLogger({ jobId: 'sync-001' })",[1193,2505,2506,2449,2508,903,2510,903,2513,903,2516,2519],{},[586,2507,610],{},[561,2509,618],{},[561,2511,2512],{},"log.info()",[561,2514,2515],{},"log.warn()",[561,2517,2518],{},"log.error()"," over the operation",[1193,2521,2522,2524,2525,2527],{},[586,2523,634],{},": Manual ",[561,2526,643],{}," call",[1193,2529,2530,2532,2533],{},[586,2531,653],{},": Head sampling applies based on computed level. Tail sampling via ",[561,2534,2535],{},"initLogger({ sampling: { keep: [...] } })",[1193,2537,2538,2465,2540,2542],{},[586,2539,683],{},[561,2541,2468],{}," was configured, the event is sent",[757,2544,2547],{"className":759,"code":2545,"filename":2546,"language":762,"meta":763,"style":763},"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",[561,2548,2549,2573,2591,2595,2604,2627,2640,2665,2671,2675,2705,2742],{"__ignoreMap":763},[767,2550,2551,2553,2555,2558,2560,2563,2565,2567,2569,2571],{"class":769,"line":770},[767,2552,971],{"class":773},[767,2554,974],{"class":788},[767,2556,2557],{"class":784}," initLogger",[767,2559,1072],{"class":788},[767,2561,2562],{"class":784}," createLogger",[767,2564,980],{"class":788},[767,2566,983],{"class":773},[767,2568,986],{"class":788},[767,2570,989],{"class":808},[767,2572,992],{"class":788},[767,2574,2575,2577,2579,2581,2583,2585,2587,2589],{"class":769,"line":792},[767,2576,971],{"class":773},[767,2578,974],{"class":788},[767,2580,2164],{"class":784},[767,2582,980],{"class":788},[767,2584,983],{"class":773},[767,2586,986],{"class":788},[767,2588,2173],{"class":808},[767,2590,992],{"class":788},[767,2592,2593],{"class":769,"line":820},[767,2594,998],{"emptyLinePlaceholder":997},[767,2596,2597,2600,2602],{"class":769,"line":831},[767,2598,2599],{"class":780},"initLogger",[767,2601,785],{"class":784},[767,2603,789],{"class":788},[767,2605,2606,2609,2611,2613,2616,2618,2620,2623,2625],{"class":769,"line":852},[767,2607,2608],{"class":795},"  env",[767,2610,799],{"class":788},[767,2612,974],{"class":788},[767,2614,2615],{"class":795}," service",[767,2617,799],{"class":788},[767,2619,986],{"class":788},[767,2621,2622],{"class":808},"worker",[767,2624,805],{"class":788},[767,2626,1581],{"class":788},[767,2628,2629,2632,2634,2636,2638],{"class":769,"line":858},[767,2630,2631],{"class":795},"  drain",[767,2633,799],{"class":788},[767,2635,2164],{"class":780},[767,2637,2042],{"class":784},[767,2639,817],{"class":788},[767,2641,2642,2644,2646,2648,2651,2653,2655,2657,2659,2661,2663],{"class":769,"line":1093},[767,2643,1269],{"class":795},[767,2645,799],{"class":788},[767,2647,974],{"class":788},[767,2649,2650],{"class":795}," rates",[767,2652,799],{"class":788},[767,2654,974],{"class":788},[767,2656,1553],{"class":795},[767,2658,799],{"class":788},[767,2660,1558],{"class":1296},[767,2662,980],{"class":788},[767,2664,1581],{"class":788},[767,2666,2667,2669],{"class":769,"line":1098},[767,2668,861],{"class":788},[767,2670,864],{"class":784},[767,2672,2673],{"class":769,"line":1121},[767,2674,998],{"emptyLinePlaceholder":997},[767,2676,2677,2679,2681,2683,2685,2687,2689,2692,2694,2696,2699,2701,2703],{"class":769,"line":1788},[767,2678,1004],{"class":1003},[767,2680,1007],{"class":784},[767,2682,1010],{"class":788},[767,2684,2562],{"class":780},[767,2686,785],{"class":784},[767,2688,1050],{"class":788},[767,2690,2691],{"class":795}," task",[767,2693,799],{"class":788},[767,2695,986],{"class":788},[767,2697,2698],{"class":808},"migrate",[767,2700,805],{"class":788},[767,2702,980],{"class":788},[767,2704,864],{"class":784},[767,2706,2707,2709,2711,2713,2715,2717,2720,2722,2725,2727,2729,2731,2733,2736,2738,2740],{"class":769,"line":1832},[767,2708,563],{"class":784},[767,2710,1043],{"class":788},[767,2712,705],{"class":780},[767,2714,785],{"class":784},[767,2716,1050],{"class":788},[767,2718,2719],{"class":795}," records",[767,2721,799],{"class":788},[767,2723,2724],{"class":1296}," 500",[767,2726,1072],{"class":788},[767,2728,1311],{"class":795},[767,2730,799],{"class":788},[767,2732,986],{"class":788},[767,2734,2735],{"class":808},"complete",[767,2737,805],{"class":788},[767,2739,980],{"class":788},[767,2741,864],{"class":784},[767,2743,2744,2746,2748,2750],{"class":769,"line":1874},[767,2745,563],{"class":784},[767,2747,1043],{"class":788},[767,2749,697],{"class":780},[767,2751,2752],{"class":784},"()\n",[541,2754,2756],{"id":2755},"next-steps","Next Steps",[1190,2758,2759,2764,2769,2774],{},[1193,2760,2761,2763],{},[723,2762,44],{"href":45}," - Design effective wide events",[1193,2765,2766,2768],{},[723,2767,59],{"href":60}," - Configure head and tail sampling",[1193,2770,2771,2773],{},[723,2772,133],{"href":138}," - Send events to external platforms",[1193,2775,2776,2778],{},[723,2777,428],{"href":429}," - Add derived context automatically",[2780,2781,2782],"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":763,"searchDepth":792,"depth":792,"links":2784},[2785,2786,2800,2801,2802,2803,2804],{"id":543,"depth":792,"text":544},{"id":730,"depth":792,"text":731,"children":2787},[2788,2789,2790,2791,2792,2794,2795,2796,2798],{"id":738,"depth":820,"text":739},{"id":867,"depth":820,"text":868},{"id":953,"depth":820,"text":954},{"id":1184,"depth":820,"text":1185},{"id":1234,"depth":820,"text":2793},"5. Tail Sampling (evlog:emit:keep)",{"id":1509,"depth":820,"text":1510},{"id":1618,"depth":820,"text":1619},{"id":1882,"depth":820,"text":2797},"8. Enrich (evlog:enrich)",{"id":2135,"depth":820,"text":2799},"9. Drain (evlog:drain)",{"id":2242,"depth":792,"text":2243},{"id":2311,"depth":792,"text":2312},{"id":2433,"depth":792,"text":2434},{"id":2486,"depth":792,"text":2487},{"id":2755,"depth":792,"text":2756},"An evlog event from creation to drain, across all three modes, through sampling, enrichment, and delivery.","md",[2808,2811],{"label":44,"icon":47,"to":45,"color":2809,"variant":2810},"neutral","subtle",{"label":59,"icon":480,"to":60,"color":2809,"variant":2810},{},{"icon":57},{"title":54,"description":2805},"59vZ-uM8kSlAN7buq0Gl4RUaMVET9YhXwrZ9ISRIzVE",[2817,2819],{"title":49,"path":50,"stem":51,"description":2818,"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":2820,"children":-1},"[object Object]",1786793483577]