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