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