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