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