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