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