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