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