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