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