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