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