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