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