[{"data":1,"prerenderedAt":1609},["ShallowReactive",2],{"navigation_docs":3,"-extend-tail-sampling":612,"-extend-tail-sampling-surround":1604},[4,35,85,148,328,489,548,587],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133,138,143],{"title":41,"path":91,"stem":92,"icon":49},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":94,"path":95,"stem":96,"icon":97},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":99,"path":100,"stem":101,"icon":102},"logs","\u002Fcli\u002Flogs","3.cli\u002F10.logs","i-lucide-scroll-text",{"title":104,"path":105,"stem":106,"icon":107},"config","\u002Fcli\u002Fconfig","3.cli\u002F11.config","i-lucide-settings-2",{"title":109,"path":110,"stem":111,"icon":112},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":114,"path":115,"stem":116,"icon":117},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":119,"path":120,"stem":121,"icon":122},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":124,"path":125,"stem":126,"icon":127},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":129,"path":130,"stem":131,"icon":132},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":134,"path":135,"stem":136,"icon":137},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":139,"path":140,"stem":141,"icon":142},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":144,"path":145,"stem":146,"icon":147},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":149,"path":150,"stem":151,"children":152,"page":34},"Integrate","\u002Fintegrate","4.integrate",[153,157,240],{"title":41,"path":154,"stem":155,"icon":156},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":158,"path":159,"stem":160,"children":161,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[162,165,195,220],{"title":41,"path":163,"stem":164,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":166,"path":167,"stem":168,"children":169,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[170,175,180,185,190],{"title":171,"path":172,"stem":173,"icon":174},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":176,"path":177,"stem":178,"icon":179},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":181,"path":182,"stem":183,"icon":184},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":186,"path":187,"stem":188,"icon":189},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":191,"path":192,"stem":193,"icon":194},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":196,"path":197,"stem":198,"children":199,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[200,205,210,215],{"title":201,"path":202,"stem":203,"icon":204},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":206,"path":207,"stem":208,"icon":209},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":211,"path":212,"stem":213,"icon":214},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":216,"path":217,"stem":218,"icon":219},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":221,"path":222,"stem":223,"children":224,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[225,230,235],{"title":226,"path":227,"stem":228,"icon":229},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":231,"path":232,"stem":233,"icon":234},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":236,"path":237,"stem":238,"icon":239},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":241,"path":242,"stem":243,"children":244,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[245,249,254,259,264,269,274,279,284,289,294,299,304,309,313,318,323],{"title":41,"path":246,"stem":247,"icon":248},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":250,"path":251,"stem":252,"icon":253},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":255,"path":256,"stem":257,"icon":258},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":260,"path":261,"stem":262,"icon":263},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":265,"path":266,"stem":267,"icon":268},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":270,"path":271,"stem":272,"icon":273},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":275,"path":276,"stem":277,"icon":278},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":280,"path":281,"stem":282,"icon":283},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":285,"path":286,"stem":287,"icon":288},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":290,"path":291,"stem":292,"icon":293},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":295,"path":296,"stem":297,"icon":298},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":300,"path":301,"stem":302,"icon":303},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":305,"path":306,"stem":307,"icon":308},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":310,"path":311,"stem":312,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":314,"path":315,"stem":316,"icon":317},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":319,"path":320,"stem":321,"icon":322},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":324,"path":325,"stem":326,"icon":327},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":329,"path":330,"stem":331,"children":332,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[333,336,341,369,396,428,449,454,459,463],{"title":41,"path":334,"stem":335,"icon":117},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":337,"path":338,"stem":339,"icon":340},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":342,"icon":343,"path":344,"stem":345,"children":346,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[347,350,355,360,365],{"title":41,"path":348,"stem":349,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":351,"path":352,"stem":353,"icon":354},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":356,"path":357,"stem":358,"icon":359},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":361,"path":362,"stem":363,"icon":364},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":366,"path":367,"stem":368,"icon":147},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":370,"icon":371,"path":372,"stem":373,"children":374,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[375,378,383,388,392],{"title":41,"path":376,"stem":377,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":379,"path":380,"stem":381,"icon":382},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":384,"path":385,"stem":386,"icon":387},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":389,"path":390,"stem":391,"icon":340},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":393,"path":394,"stem":395,"icon":122},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":397,"icon":398,"path":399,"stem":400,"children":401,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[402,405,410,415,420,424],{"title":41,"path":403,"stem":404,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":406,"path":407,"stem":408,"icon":409},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":411,"path":412,"stem":413,"icon":414},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":416,"path":417,"stem":418,"icon":419},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":421,"path":422,"stem":423,"icon":398},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":425,"path":426,"stem":427,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":366,"icon":122,"path":429,"stem":430,"children":431,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[432,435,440,445],{"title":41,"path":433,"stem":434,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":436,"path":437,"stem":438,"icon":439},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":441,"path":442,"stem":443,"icon":444},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":446,"path":447,"stem":448,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":450,"path":451,"stem":452,"icon":453},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":455,"path":456,"stem":457,"icon":458},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":460,"path":461,"stem":462,"icon":444},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":464,"icon":465,"path":466,"stem":467,"children":468,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[469,472,477,482,485],{"title":41,"path":470,"stem":471,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":473,"path":474,"stem":475,"icon":476},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":478,"path":479,"stem":480,"icon":481},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":446,"path":483,"stem":484,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":425,"path":486,"stem":487,"icon":488},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":490,"path":491,"stem":492,"children":493,"page":34},"Extend","\u002Fextend","6.extend",[494,498,503,508,512,517,521,525,529,533,538,543],{"title":41,"path":495,"stem":496,"icon":497},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":499,"path":500,"stem":501,"icon":502},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":504,"path":505,"stem":506,"icon":507},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":509,"path":510,"stem":511,"icon":502},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":513,"path":514,"stem":515,"icon":516},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":425,"path":518,"stem":519,"icon":520},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":522,"path":523,"stem":524,"icon":497},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":526,"path":527,"stem":528,"icon":453},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":530,"path":531,"stem":532,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":534,"path":535,"stem":536,"icon":537},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":539,"path":540,"stem":541,"icon":542},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":544,"path":545,"stem":546,"icon":547},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":446,"path":549,"stem":550,"children":551,"page":34},"\u002Freference","7.reference",[552,556,561,564,569,573,578,582],{"title":41,"path":553,"stem":554,"icon":555},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":557,"path":558,"stem":559,"icon":560},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":393,"path":562,"stem":563,"icon":122},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":565,"path":566,"stem":567,"icon":568},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":570,"path":571,"stem":572,"icon":398},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":574,"path":575,"stem":576,"icon":577},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":579,"path":580,"stem":581,"icon":453},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":583,"path":584,"stem":585,"icon":586},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":588,"path":589,"stem":590,"children":591,"page":34},"Compare","\u002Fcompare","8.compare",[592,596,600,604,608],{"title":593,"path":594,"stem":595,"icon":577},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":597,"path":598,"stem":599,"icon":214},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":601,"path":602,"stem":603,"icon":577},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":605,"path":606,"stem":607,"icon":577},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":609,"path":610,"stem":611,"icon":577},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":613,"title":614,"body":615,"description":1592,"extension":1593,"links":1594,"meta":1600,"navigation":1601,"path":531,"seo":1602,"stem":532,"__hash__":1603},"docs\u002F6.extend\u002F6.tail-sampling.md","Tail Sampling",{"type":616,"value":617,"toc":1585},"minimark",[618,621,633,653,713,718,724,754,758,761,1209,1212,1216,1233,1403,1410,1414,1420,1546,1557,1561,1581],[619,620],"tail-sample-decision",{},[622,623,624,627,628,632],"p",{},[625,626,530],"strong",{}," is a decision made ",[629,630,631],"em",{},"after"," the request runs, with full knowledge of its outcome (status, duration, errors, custom flags). It's how you keep all errors and slow requests while throwing away the bulk of healthy traffic, the opposite of head sampling, which decides up front before knowing what happens.",[622,634,635,636,640,641,644,645,648,649,652],{},"The full theory and config reference, covering built-in ",[637,638,639],"code",{},"keep"," rules, custom predicates via ",[637,642,643],{},"evlog:emit:keep",", combining head + tail sampling, lives at ",[646,647,66],"a",{"href":67},". This page covers the ",[625,650,651],{},"extension surface",": how to plug your own keep logic into the pipeline.",[654,655,658,661,705],"prompt",{":actions":656,"description":657,"icon":69},"[\"copy\",\"cursor\",\"claude\"]","Configure tail sampling on evlog",[622,659,660],{},"Set up tail sampling so I keep all errors and slow requests while dropping healthy noise.",[662,663,664,671,685,688,698],"ul",{},[665,666,667,668],"li",{},"Start with the built-in declarative rules: ",[637,669,670],{},"evlog.sampling.keep = { status: '>=400', duration: '>1000', path: ['\u002Fapi\u002Fauth\u002F*'] }",[665,672,673,674,676,677,680,681,684],{},"For multi-field or derived conditions, register an ",[637,675,643],{}," hook (Nitro: ",[637,678,679],{},"nitroApp.hooks.hook('evlog:emit:keep', (ctx) => ...)","); set ",[637,682,683],{},"ctx.shouldKeep = true"," to keep",[665,686,687],{},"Keep the hook fast. It runs on every request after enrichment, so no I\u002FO and no async work",[665,689,690,691,694,695,697],{},"Combine with head sampling (e.g. 10% of healthy traffic) by setting both ",[637,692,693],{},"sample"," (head) and ",[637,696,639],{}," (tail)",[665,699,700,701,704],{},"Always keep error events (",[637,702,703],{},"level: 'error'",") regardless of sampling; double-check rules don't accidentally drop them",[622,706,707,708],{},"Docs: ",[646,709,710],{"href":710,"rel":711},"https:\u002F\u002Fwww.evlog.dev\u002Fextend\u002Ftail-sampling",[712],"nofollow",[714,715,717],"h2",{"id":716},"when-the-built-in-rules-arent-enough","When the built-in rules aren't enough",[622,719,720,721,723],{},"The built-in declarative ",[637,722,639],{}," rules cover the typical cases (status code thresholds, duration thresholds, path matching, level matching). Drop to a custom hook when you need:",[662,725,726,740,748],{},[665,727,728,731,732,735,736,739],{},[625,729,730],{},"Conditional logic on more than one field"," (e.g. \"keep if ",[637,733,734],{},"status >= 500"," AND ",[637,737,738],{},"user.plan === 'enterprise'","\")",[665,741,742,731,745,739],{},[625,743,744],{},"Keep based on a derived value",[637,746,747],{},"event.audit?.context.actor.role === 'admin'",[665,749,750,753],{},[625,751,752],{},"Stateful decisions"," (rare; needs care since sampling runs in the hot path)",[714,755,757],{"id":756},"custom-keep-hook","Custom keep hook",[622,759,760],{},"The hook signature is the same regardless of framework. The wiring depends on your runtime.",[762,763,764,922,1024],"framework-tabs",{},[765,766,771],"pre",{"className":767,"code":768,"filename":250,"language":769,"meta":770,"style":770},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","nitroApp.hooks.hook('evlog:emit:keep', (ctx) => {\n  if (ctx.context.user?.plan === 'enterprise' && ctx.status >= 500) {\n    ctx.shouldKeep = true\n  }\n})\n","ts","",[637,772,773,826,889,907,913],{"__ignoreMap":770},[774,775,778,782,786,789,791,795,798,801,804,806,809,812,816,819,823],"span",{"class":776,"line":777},"line",1,[774,779,781],{"class":780},"sTEyZ","nitroApp",[774,783,785],{"class":784},"sMK4o",".",[774,787,788],{"class":780},"hooks",[774,790,785],{"class":784},[774,792,794],{"class":793},"s2Zo4","hook",[774,796,797],{"class":780},"(",[774,799,800],{"class":784},"'",[774,802,643],{"class":803},"sfazB",[774,805,800],{"class":784},[774,807,808],{"class":784},",",[774,810,811],{"class":784}," (",[774,813,815],{"class":814},"sHdIc","ctx",[774,817,818],{"class":784},")",[774,820,822],{"class":821},"spNyl"," =>",[774,824,825],{"class":784}," {\n",[774,827,829,833,836,838,840,843,845,848,851,854,857,860,863,865,868,871,873,876,879,883,886],{"class":776,"line":828},2,[774,830,832],{"class":831},"s7zQu","  if",[774,834,811],{"class":835},"swJcz",[774,837,815],{"class":780},[774,839,785],{"class":784},[774,841,842],{"class":780},"context",[774,844,785],{"class":784},[774,846,847],{"class":780},"user",[774,849,850],{"class":784},"?.",[774,852,853],{"class":780},"plan",[774,855,856],{"class":784}," ===",[774,858,859],{"class":784}," '",[774,861,862],{"class":803},"enterprise",[774,864,800],{"class":784},[774,866,867],{"class":784}," &&",[774,869,870],{"class":780}," ctx",[774,872,785],{"class":784},[774,874,875],{"class":780},"status",[774,877,878],{"class":784}," >=",[774,880,882],{"class":881},"sbssI"," 500",[774,884,885],{"class":835},") ",[774,887,888],{"class":784},"{\n",[774,890,892,895,897,900,903],{"class":776,"line":891},3,[774,893,894],{"class":780},"    ctx",[774,896,785],{"class":784},[774,898,899],{"class":780},"shouldKeep",[774,901,902],{"class":784}," =",[774,904,906],{"class":905},"sfNiH"," true\n",[774,908,910],{"class":776,"line":909},4,[774,911,912],{"class":784},"  }\n",[774,914,916,919],{"class":776,"line":915},5,[774,917,918],{"class":784},"}",[774,920,921],{"class":780},")\n",[765,923,924],{"className":767,"code":768,"filename":265,"language":769,"meta":770,"style":770},[637,925,926,958,1002,1014,1018],{"__ignoreMap":770},[774,927,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956],{"class":776,"line":777},[774,929,781],{"class":780},[774,931,785],{"class":784},[774,933,788],{"class":780},[774,935,785],{"class":784},[774,937,794],{"class":793},[774,939,797],{"class":780},[774,941,800],{"class":784},[774,943,643],{"class":803},[774,945,800],{"class":784},[774,947,808],{"class":784},[774,949,811],{"class":784},[774,951,815],{"class":814},[774,953,818],{"class":784},[774,955,822],{"class":821},[774,957,825],{"class":784},[774,959,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,990,992,994,996,998,1000],{"class":776,"line":828},[774,961,832],{"class":831},[774,963,811],{"class":835},[774,965,815],{"class":780},[774,967,785],{"class":784},[774,969,842],{"class":780},[774,971,785],{"class":784},[774,973,847],{"class":780},[774,975,850],{"class":784},[774,977,853],{"class":780},[774,979,856],{"class":784},[774,981,859],{"class":784},[774,983,862],{"class":803},[774,985,800],{"class":784},[774,987,867],{"class":784},[774,989,870],{"class":780},[774,991,785],{"class":784},[774,993,875],{"class":780},[774,995,878],{"class":784},[774,997,882],{"class":881},[774,999,885],{"class":835},[774,1001,888],{"class":784},[774,1003,1004,1006,1008,1010,1012],{"class":776,"line":891},[774,1005,894],{"class":780},[774,1007,785],{"class":784},[774,1009,899],{"class":780},[774,1011,902],{"class":784},[774,1013,906],{"class":905},[774,1015,1016],{"class":776,"line":909},[774,1017,912],{"class":784},[774,1019,1020,1022],{"class":776,"line":915},[774,1021,918],{"class":784},[774,1023,921],{"class":780},[765,1025,1028],{"className":767,"code":1026,"filename":1027,"language":769,"meta":770,"style":770},"import { definePlugin } from 'evlog\u002Ftoolkit'\n\nexport const keepEnterpriseErrors = definePlugin({\n  name: 'keep-enterprise-errors',\n  keep(ctx) {\n    if (ctx.context.user?.plan === 'enterprise' && ctx.status >= 500) {\n      ctx.shouldKeep = true\n    }\n  },\n})\n\n\u002F\u002F Then: initLogger({ plugins: [keepEnterpriseErrors] })\n\u002F\u002F   or: app.use(evlog({ plugins: [keepEnterpriseErrors] }))\n","Plugin (any framework)",[637,1029,1030,1055,1061,1081,1099,1112,1158,1172,1178,1184,1191,1196,1203],{"__ignoreMap":770},[774,1031,1032,1035,1038,1041,1044,1047,1049,1052],{"class":776,"line":777},[774,1033,1034],{"class":831},"import",[774,1036,1037],{"class":784}," {",[774,1039,1040],{"class":780}," definePlugin",[774,1042,1043],{"class":784}," }",[774,1045,1046],{"class":831}," from",[774,1048,859],{"class":784},[774,1050,1051],{"class":803},"evlog\u002Ftoolkit",[774,1053,1054],{"class":784},"'\n",[774,1056,1057],{"class":776,"line":828},[774,1058,1060],{"emptyLinePlaceholder":1059},true,"\n",[774,1062,1063,1066,1069,1072,1075,1077,1079],{"class":776,"line":891},[774,1064,1065],{"class":831},"export",[774,1067,1068],{"class":821}," const",[774,1070,1071],{"class":780}," keepEnterpriseErrors ",[774,1073,1074],{"class":784},"=",[774,1076,1040],{"class":793},[774,1078,797],{"class":780},[774,1080,888],{"class":784},[774,1082,1083,1086,1089,1091,1094,1096],{"class":776,"line":909},[774,1084,1085],{"class":835},"  name",[774,1087,1088],{"class":784},":",[774,1090,859],{"class":784},[774,1092,1093],{"class":803},"keep-enterprise-errors",[774,1095,800],{"class":784},[774,1097,1098],{"class":784},",\n",[774,1100,1101,1104,1106,1108,1110],{"class":776,"line":915},[774,1102,1103],{"class":835},"  keep",[774,1105,797],{"class":784},[774,1107,815],{"class":814},[774,1109,818],{"class":784},[774,1111,825],{"class":784},[774,1113,1115,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156],{"class":776,"line":1114},6,[774,1116,1117],{"class":831},"    if",[774,1119,811],{"class":835},[774,1121,815],{"class":780},[774,1123,785],{"class":784},[774,1125,842],{"class":780},[774,1127,785],{"class":784},[774,1129,847],{"class":780},[774,1131,850],{"class":784},[774,1133,853],{"class":780},[774,1135,856],{"class":784},[774,1137,859],{"class":784},[774,1139,862],{"class":803},[774,1141,800],{"class":784},[774,1143,867],{"class":784},[774,1145,870],{"class":780},[774,1147,785],{"class":784},[774,1149,875],{"class":780},[774,1151,878],{"class":784},[774,1153,882],{"class":881},[774,1155,885],{"class":835},[774,1157,888],{"class":784},[774,1159,1161,1164,1166,1168,1170],{"class":776,"line":1160},7,[774,1162,1163],{"class":780},"      ctx",[774,1165,785],{"class":784},[774,1167,899],{"class":780},[774,1169,902],{"class":784},[774,1171,906],{"class":905},[774,1173,1175],{"class":776,"line":1174},8,[774,1176,1177],{"class":784},"    }\n",[774,1179,1181],{"class":776,"line":1180},9,[774,1182,1183],{"class":784},"  },\n",[774,1185,1187,1189],{"class":776,"line":1186},10,[774,1188,918],{"class":784},[774,1190,921],{"class":780},[774,1192,1194],{"class":776,"line":1193},11,[774,1195,1060],{"emptyLinePlaceholder":1059},[774,1197,1199],{"class":776,"line":1198},12,[774,1200,1202],{"class":1201},"sHwdD","\u002F\u002F Then: initLogger({ plugins: [keepEnterpriseErrors] })\n",[774,1204,1206],{"class":776,"line":1205},13,[774,1207,1208],{"class":1201},"\u002F\u002F   or: app.use(evlog({ plugins: [keepEnterpriseErrors] }))\n",[622,1210,1211],{},"For non-trivial logic, prefer the plugin shape, since it travels with the rest of your evlog config (drains, enrichers) and is reusable across frameworks.",[714,1213,1215],{"id":1214},"composing-several-keep-predicates","Composing several keep predicates",[622,1217,1218,1219,1222,1223,1225,1226,1228,1229,1232],{},"Use ",[637,1220,1221],{},"composeKeep"," from ",[637,1224,1051],{}," to combine multiple predicates into one hook. Each predicate runs independently and the final ",[637,1227,899],{}," is ",[637,1230,1231],{},"true"," if any of them set it:",[765,1234,1236],{"className":767,"code":1235,"language":769,"meta":770,"style":770},"import { composeKeep } from 'evlog\u002Ftoolkit'\n\nconst keep = composeKeep([\n  ({ duration, shouldKeep }) => duration && duration > 2000 ? true : shouldKeep,\n  ({ event }) => event.level === 'error',\n  ({ context, status }) => context.user?.plan === 'enterprise' && status >= 500,\n])\n",[637,1237,1238,1257,1261,1276,1321,1351,1398],{"__ignoreMap":770},[774,1239,1240,1242,1244,1247,1249,1251,1253,1255],{"class":776,"line":777},[774,1241,1034],{"class":831},[774,1243,1037],{"class":784},[774,1245,1246],{"class":780}," composeKeep",[774,1248,1043],{"class":784},[774,1250,1046],{"class":831},[774,1252,859],{"class":784},[774,1254,1051],{"class":803},[774,1256,1054],{"class":784},[774,1258,1259],{"class":776,"line":828},[774,1260,1060],{"emptyLinePlaceholder":1059},[774,1262,1263,1266,1269,1271,1273],{"class":776,"line":891},[774,1264,1265],{"class":821},"const",[774,1267,1268],{"class":780}," keep ",[774,1270,1074],{"class":784},[774,1272,1246],{"class":793},[774,1274,1275],{"class":780},"([\n",[774,1277,1278,1281,1284,1286,1289,1292,1294,1297,1300,1302,1305,1308,1311,1314,1317,1319],{"class":776,"line":909},[774,1279,1280],{"class":784},"  ({",[774,1282,1283],{"class":814}," duration",[774,1285,808],{"class":784},[774,1287,1288],{"class":814}," shouldKeep",[774,1290,1291],{"class":784}," })",[774,1293,822],{"class":821},[774,1295,1296],{"class":780}," duration ",[774,1298,1299],{"class":784},"&&",[774,1301,1296],{"class":780},[774,1303,1304],{"class":784},">",[774,1306,1307],{"class":881}," 2000",[774,1309,1310],{"class":784}," ?",[774,1312,1313],{"class":905}," true",[774,1315,1316],{"class":784}," :",[774,1318,1288],{"class":780},[774,1320,1098],{"class":784},[774,1322,1323,1325,1328,1330,1332,1334,1336,1339,1342,1344,1347,1349],{"class":776,"line":915},[774,1324,1280],{"class":784},[774,1326,1327],{"class":814}," event",[774,1329,1291],{"class":784},[774,1331,822],{"class":821},[774,1333,1327],{"class":780},[774,1335,785],{"class":784},[774,1337,1338],{"class":780},"level ",[774,1340,1341],{"class":784},"===",[774,1343,859],{"class":784},[774,1345,1346],{"class":803},"error",[774,1348,800],{"class":784},[774,1350,1098],{"class":784},[774,1352,1353,1355,1358,1360,1363,1365,1367,1369,1371,1373,1375,1378,1380,1382,1384,1386,1388,1391,1394,1396],{"class":776,"line":1114},[774,1354,1280],{"class":784},[774,1356,1357],{"class":814}," context",[774,1359,808],{"class":784},[774,1361,1362],{"class":814}," status",[774,1364,1291],{"class":784},[774,1366,822],{"class":821},[774,1368,1357],{"class":780},[774,1370,785],{"class":784},[774,1372,847],{"class":780},[774,1374,850],{"class":784},[774,1376,1377],{"class":780},"plan ",[774,1379,1341],{"class":784},[774,1381,859],{"class":784},[774,1383,862],{"class":803},[774,1385,800],{"class":784},[774,1387,867],{"class":784},[774,1389,1390],{"class":780}," status ",[774,1392,1393],{"class":784},">=",[774,1395,882],{"class":881},[774,1397,1098],{"class":784},[774,1399,1400],{"class":776,"line":1160},[774,1401,1402],{"class":780},"])\n",[622,1404,1405,1406,1409],{},"Errors in individual predicates are isolated (logged with the ",[637,1407,1408],{},"[evlog\u002Fkeep]"," prefix) so a buggy predicate cannot silently drop legitimate events.",[714,1411,1413],{"id":1412},"what-you-receive","What you receive",[622,1415,1416,1417,1088],{},"The keep hook gets a ",[637,1418,1419],{},"TailSamplingContext",[765,1421,1423],{"className":767,"code":1422,"language":769,"meta":770,"style":770},"interface TailSamplingContext {\n  \u002F** The event level (debug | info | warn | error) *\u002F\n  level: string\n  \u002F** HTTP response status, if known *\u002F\n  status?: number\n  \u002F** Request duration in milliseconds, if measured *\u002F\n  duration?: number\n  \u002F** The full accumulated context (everything log.set'd) *\u002F\n  context: Record\u003Cstring, unknown>\n  \u002F** The fully enriched event ready to drain *\u002F\n  event: WideEvent\n  \u002F** Mutable: set to true to force-keep this event *\u002F\n  shouldKeep: boolean\n}\n",[637,1424,1425,1436,1441,1451,1456,1467,1472,1481,1486,1510,1515,1525,1530,1540],{"__ignoreMap":770},[774,1426,1427,1430,1434],{"class":776,"line":777},[774,1428,1429],{"class":821},"interface",[774,1431,1433],{"class":1432},"sBMFI"," TailSamplingContext",[774,1435,825],{"class":784},[774,1437,1438],{"class":776,"line":828},[774,1439,1440],{"class":1201},"  \u002F** The event level (debug | info | warn | error) *\u002F\n",[774,1442,1443,1446,1448],{"class":776,"line":891},[774,1444,1445],{"class":835},"  level",[774,1447,1088],{"class":784},[774,1449,1450],{"class":1432}," string\n",[774,1452,1453],{"class":776,"line":909},[774,1454,1455],{"class":1201},"  \u002F** HTTP response status, if known *\u002F\n",[774,1457,1458,1461,1464],{"class":776,"line":915},[774,1459,1460],{"class":835},"  status",[774,1462,1463],{"class":784},"?:",[774,1465,1466],{"class":1432}," number\n",[774,1468,1469],{"class":776,"line":1114},[774,1470,1471],{"class":1201},"  \u002F** Request duration in milliseconds, if measured *\u002F\n",[774,1473,1474,1477,1479],{"class":776,"line":1160},[774,1475,1476],{"class":835},"  duration",[774,1478,1463],{"class":784},[774,1480,1466],{"class":1432},[774,1482,1483],{"class":776,"line":1174},[774,1484,1485],{"class":1201},"  \u002F** The full accumulated context (everything log.set'd) *\u002F\n",[774,1487,1488,1491,1493,1496,1499,1502,1504,1507],{"class":776,"line":1180},[774,1489,1490],{"class":835},"  context",[774,1492,1088],{"class":784},[774,1494,1495],{"class":1432}," Record",[774,1497,1498],{"class":784},"\u003C",[774,1500,1501],{"class":1432},"string",[774,1503,808],{"class":784},[774,1505,1506],{"class":1432}," unknown",[774,1508,1509],{"class":784},">\n",[774,1511,1512],{"class":776,"line":1186},[774,1513,1514],{"class":1201},"  \u002F** The fully enriched event ready to drain *\u002F\n",[774,1516,1517,1520,1522],{"class":776,"line":1193},[774,1518,1519],{"class":835},"  event",[774,1521,1088],{"class":784},[774,1523,1524],{"class":1432}," WideEvent\n",[774,1526,1527],{"class":776,"line":1198},[774,1528,1529],{"class":1201},"  \u002F** Mutable: set to true to force-keep this event *\u002F\n",[774,1531,1532,1535,1537],{"class":776,"line":1205},[774,1533,1534],{"class":835},"  shouldKeep",[774,1536,1088],{"class":784},[774,1538,1539],{"class":1432}," boolean\n",[774,1541,1543],{"class":776,"line":1542},14,[774,1544,1545],{"class":784},"}\n",[622,1547,1548,1549,1552,1553,1556],{},"Setting ",[637,1550,1551],{},"shouldKeep = true"," forces the event through. Setting ",[637,1554,1555],{},"shouldKeep = false"," is a no-op (other predicates may still keep it; the head sampler decides the default).",[714,1558,1560],{"id":1559},"next-steps","Next steps",[662,1562,1563,1571,1576],{},[665,1564,1565,1567,1568,1570],{},[646,1566,66],{"href":67},": head sampling, tail sampling, the built-in declarative ",[637,1569,639],{}," rules",[665,1572,1573,1575],{},[646,1574,522],{"href":523},": when keep belongs in a multi-hook plugin",[665,1577,1578,1580],{},[646,1579,570],{"href":571},": keep all errors, double-check the rules",[1582,1583,1584],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":770,"searchDepth":828,"depth":828,"links":1586},[1587,1588,1589,1590,1591],{"id":716,"depth":828,"text":717},{"id":756,"depth":828,"text":757},{"id":1214,"depth":828,"text":1215},{"id":1412,"depth":828,"text":1413},{"id":1559,"depth":828,"text":1560},"Decide after the fact whether to keep an event, knowing its status, duration, and errors. Keep every error, throw away healthy noise.","md",[1595,1599],{"label":1596,"icon":69,"to":67,"color":1597,"variant":1598},"Sampling Reference","neutral","subtle",{"label":522,"icon":497,"to":523,"color":1597,"variant":1598},{},{"title":530,"icon":69},{"title":614,"description":1592},"oQqP-GaMvVI255FkRbSYb_EbcfGIC_P2brC3k9GYT_g",[1605,1607],{"title":526,"path":527,"stem":528,"description":1606,"icon":453,"children":-1},"Write an enricher that adds deployment metadata, tenant ids, feature flags, or anything computed. Error isolation and merging are handled.",{"title":534,"path":535,"stem":536,"description":1608,"icon":537,"children":-1},"Every drain request carries User-Agent and X-Evlog-Source so receivers can triage the traffic. Override or suppress them when you need to.",1791704421756]