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