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