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