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