[{"data":1,"prerenderedAt":2053},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-configuration":297,"-core-concepts-configuration-surround":2048},[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":81,"body":299,"description":2036,"extension":2037,"links":2038,"meta":2044,"navigation":2045,"path":82,"seo":2046,"stem":83,"__hash__":2047},"docs\u002F3.core-concepts\u002F1.configuration.md",{"type":300,"value":301,"toc":2020},"minimark",[302,315,325,332,607,834,841,898,914,918,928,1067,1071,1077,1177,1186,1190,1193,1572,1698,1720,1724,1733,1859,1863,1866,1869,1879,1974,1981,1984,2009,2016],[303,304,305,306,310,311,314],"p",{},"evlog has two configuration surfaces: ",[307,308,309],"strong",{},"global options"," set once at startup, and ",[307,312,313],{},"middleware options"," set per-framework integration. This page documents both.",[316,317,319,320,324],"h2",{"id":318},"global-options-initlogger","Global Options (",[321,322,323],"code",{},"initLogger",")",[303,326,327,328,331],{},"These options apply to all frameworks. Call ",[321,329,330],{},"initLogger()"," once at application startup for standalone frameworks (Hono, Express, Fastify, Elysia, NestJS, SvelteKit, Cloudflare Workers). For Nuxt and Nitro, these are set via module config and passed through automatically.",[333,334,340],"pre",{"className":335,"code":336,"filename":337,"language":338,"meta":339,"style":339},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { initLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({\n  enabled: true,\n  env: { service: 'my-api', environment: 'production' },\n  pretty: false,\n  silent: false,\n  stringify: true,\n  minLevel: 'info',\n  sampling: { rates: { info: 10 }, keep: [{ status: 400 }] },\n  drain: createAxiomDrain(),\n})\n","src\u002Findex.ts","typescript","",[321,341,342,375,396,403,415,432,473,486,498,510,527,583,598],{"__ignoreMap":339},[343,344,347,351,355,359,362,365,368,372],"span",{"class":345,"line":346},"line",1,[343,348,350],{"class":349},"s7zQu","import",[343,352,354],{"class":353},"sMK4o"," {",[343,356,358],{"class":357},"sTEyZ"," initLogger",[343,360,361],{"class":353}," }",[343,363,364],{"class":349}," from",[343,366,367],{"class":353}," '",[343,369,371],{"class":370},"sfazB","evlog",[343,373,374],{"class":353},"'\n",[343,376,378,380,382,385,387,389,391,394],{"class":345,"line":377},2,[343,379,350],{"class":349},[343,381,354],{"class":353},[343,383,384],{"class":357}," createAxiomDrain",[343,386,361],{"class":353},[343,388,364],{"class":349},[343,390,367],{"class":353},[343,392,393],{"class":370},"evlog\u002Faxiom",[343,395,374],{"class":353},[343,397,399],{"class":345,"line":398},3,[343,400,402],{"emptyLinePlaceholder":401},true,"\n",[343,404,406,409,412],{"class":345,"line":405},4,[343,407,323],{"class":408},"s2Zo4",[343,410,411],{"class":357},"(",[343,413,414],{"class":353},"{\n",[343,416,418,422,425,429],{"class":345,"line":417},5,[343,419,421],{"class":420},"swJcz","  enabled",[343,423,424],{"class":353},":",[343,426,428],{"class":427},"sfNiH"," true",[343,430,431],{"class":353},",\n",[343,433,435,438,440,442,445,447,449,452,455,458,461,463,465,468,470],{"class":345,"line":434},6,[343,436,437],{"class":420},"  env",[343,439,424],{"class":353},[343,441,354],{"class":353},[343,443,444],{"class":420}," service",[343,446,424],{"class":353},[343,448,367],{"class":353},[343,450,451],{"class":370},"my-api",[343,453,454],{"class":353},"'",[343,456,457],{"class":353},",",[343,459,460],{"class":420}," environment",[343,462,424],{"class":353},[343,464,367],{"class":353},[343,466,467],{"class":370},"production",[343,469,454],{"class":353},[343,471,472],{"class":353}," },\n",[343,474,476,479,481,484],{"class":345,"line":475},7,[343,477,478],{"class":420},"  pretty",[343,480,424],{"class":353},[343,482,483],{"class":427}," false",[343,485,431],{"class":353},[343,487,489,492,494,496],{"class":345,"line":488},8,[343,490,491],{"class":420},"  silent",[343,493,424],{"class":353},[343,495,483],{"class":427},[343,497,431],{"class":353},[343,499,501,504,506,508],{"class":345,"line":500},9,[343,502,503],{"class":420},"  stringify",[343,505,424],{"class":353},[343,507,428],{"class":427},[343,509,431],{"class":353},[343,511,513,516,518,520,523,525],{"class":345,"line":512},10,[343,514,515],{"class":420},"  minLevel",[343,517,424],{"class":353},[343,519,367],{"class":353},[343,521,522],{"class":370},"info",[343,524,454],{"class":353},[343,526,431],{"class":353},[343,528,530,533,535,537,540,542,544,547,549,553,556,559,561,564,567,570,572,575,577,580],{"class":345,"line":529},11,[343,531,532],{"class":420},"  sampling",[343,534,424],{"class":353},[343,536,354],{"class":353},[343,538,539],{"class":420}," rates",[343,541,424],{"class":353},[343,543,354],{"class":353},[343,545,546],{"class":420}," info",[343,548,424],{"class":353},[343,550,552],{"class":551},"sbssI"," 10",[343,554,555],{"class":353}," },",[343,557,558],{"class":420}," keep",[343,560,424],{"class":353},[343,562,563],{"class":357}," [",[343,565,566],{"class":353},"{",[343,568,569],{"class":420}," status",[343,571,424],{"class":353},[343,573,574],{"class":551}," 400",[343,576,361],{"class":353},[343,578,579],{"class":357},"] ",[343,581,582],{"class":353},"},\n",[343,584,586,589,591,593,596],{"class":345,"line":585},12,[343,587,588],{"class":420},"  drain",[343,590,424],{"class":353},[343,592,384],{"class":408},[343,594,595],{"class":357},"()",[343,597,431],{"class":353},[343,599,601,604],{"class":345,"line":600},13,[343,602,603],{"class":353},"}",[343,605,606],{"class":357},")\n",[608,609,610,629],"table",{},[611,612,613],"thead",{},[614,615,616,620,623,626],"tr",{},[617,618,619],"th",{},"Option",[617,621,622],{},"Type",[617,624,625],{},"Default",[617,627,628],{},"Description",[630,631,632,657,675,697,715,739,767,790,815],"tbody",{},[614,633,634,640,645,650],{},[635,636,637],"td",{},[321,638,639],{},"enabled",[635,641,642],{},[321,643,644],{},"boolean",[635,646,647],{},[321,648,649],{},"true",[635,651,652,653,656],{},"Enable\u002Fdisable all logging globally. When ",[321,654,655],{},"false",", all operations become no-ops",[614,658,659,664,669,672],{},[635,660,661],{},[321,662,663],{},"env",[635,665,666],{},[321,667,668],{},"Partial\u003CEnvironmentContext>",[635,670,671],{},"Auto-detected",[635,673,674],{},"Environment context overrides (see below)",[614,676,677,682,686,691],{},[635,678,679],{},[321,680,681],{},"pretty",[635,683,684],{},[321,685,644],{},[635,687,688,690],{},[321,689,649],{}," in dev",[635,692,693,694],{},"Pretty print with tree formatting. Auto-detected based on ",[321,695,696],{},"NODE_ENV",[614,698,699,704,708,712],{},[635,700,701],{},[321,702,703],{},"silent",[635,705,706],{},[321,707,644],{},[635,709,710],{},[321,711,655],{},[635,713,714],{},"Suppress console output. Events are still built, sampled, and passed to drains",[614,716,717,722,726,730],{},[635,718,719],{},[321,720,721],{},"stringify",[635,723,724],{},[321,725,644],{},[635,727,728],{},[321,729,649],{},[635,731,732,733,735,736,738],{},"Emit JSON strings when ",[321,734,681],{}," is disabled. Set to ",[321,737,655],{}," for Cloudflare Workers",[614,740,741,746,751,756],{},[635,742,743],{},[321,744,745],{},"minLevel",[635,747,748],{},[321,749,750],{},"'debug' | 'info' | 'warn' | 'error'",[635,752,753],{},[321,754,755],{},"'debug'",[635,757,758,759,762,763,766],{},"Minimum severity for the global ",[321,760,761],{},"log"," API only (not ",[321,764,765],{},"createLogger"," \u002F request wide events). Order: debug \u003C info \u003C warn \u003C error",[614,768,769,774,779,784],{},[635,770,771],{},[321,772,773],{},"sampling",[635,775,776],{},[321,777,778],{},"SamplingConfig",[635,780,781],{},[321,782,783],{},"undefined",[635,785,786,787],{},"Head and tail sampling configuration. See ",[788,789,86],"a",{"href":87},[614,791,792,797,802,807],{},[635,793,794],{},[321,795,796],{},"redact",[635,798,799],{},[321,800,801],{},"boolean | RedactConfig",[635,803,804,806],{},[321,805,649],{}," in production",[635,808,809,810,812,813],{},"Enabled by default in production. ",[321,811,655],{}," to disable. Object for fine-grained control. See ",[788,814,111],{"href":112},[614,816,817,822,827,831],{},[635,818,819],{},[321,820,821],{},"drain",[635,823,824],{},[321,825,826],{},"(ctx: DrainContext) => void",[635,828,829],{},[321,830,783],{},[635,832,833],{},"Drain callback for sending events to external services",[835,836,838,840],"h3",{"id":837},"minlevel-vs-sampling",[321,839,745],{}," vs sampling",[842,843,844,882],"ul",{},[845,846,847,851,852,855,856,859,860,863,864,867,868,871,872,877,878,881],"li",{},[307,848,849],{},[321,850,745],{}," is a ",[307,853,854],{},"hard threshold"," on the simple ",[321,857,858],{},"log.*"," API: levels below the threshold are never emitted. It does ",[307,861,862],{},"not"," apply to wide events from ",[321,865,866],{},"useLogger"," \u002F ",[321,869,870],{},"createLogger().emit()"," — use ",[307,873,874],{},[321,875,876],{},"sampling.rates"," (and tail ",[321,879,880],{},"keep",") for request volume.",[845,883,884,887,888,890,891,894,895,897],{},[307,885,886],{},"Head sampling"," (",[321,889,876],{},") is ",[307,892,893],{},"probabilistic"," on what is already allowed by ",[321,896,745],{}," for simple logs.",[303,899,900,901,867,904,907,908,910,911,913],{},"Evaluation order for ",[321,902,903],{},"log.info",[321,905,906],{},"log.debug"," \u002F etc.: ",[321,909,639],{}," → ",[321,912,745],{}," → head sampling → output.",[835,915,917],{"id":916},"environment-context","Environment Context",[303,919,920,921,923,924,927],{},"The ",[321,922,663],{}," option controls the fields included in every log event. Most values are auto-detected from environment variables and ",[321,925,926],{},"package.json",".",[608,929,930,944],{},[611,931,932],{},[614,933,934,937,939,941],{},[617,935,936],{},"Field",[617,938,622],{},[617,940,625],{},[617,942,943],{},"Auto-detected from",[630,945,946,972,992,1015,1041],{},[614,947,948,953,958,963],{},[635,949,950],{},[321,951,952],{},"service",[635,954,955],{},[321,956,957],{},"string",[635,959,960],{},[321,961,962],{},"'app'",[635,964,965,968,969,971],{},[321,966,967],{},"SERVICE_NAME",", ",[321,970,926],{}," name",[614,973,974,979,983,988],{},[635,975,976],{},[321,977,978],{},"environment",[635,980,981],{},[321,982,957],{},[635,984,985],{},[321,986,987],{},"'development'",[635,989,990],{},[321,991,696],{},[614,993,994,999,1003,1007],{},[635,995,996],{},[321,997,998],{},"version",[635,1000,1001],{},[321,1002,957],{},[635,1004,1005],{},[321,1006,783],{},[635,1008,1009,968,1012,1014],{},[321,1010,1011],{},"APP_VERSION",[321,1013,926],{}," version",[614,1016,1017,1022,1026,1030],{},[635,1018,1019],{},[321,1020,1021],{},"commitHash",[635,1023,1024],{},[321,1025,957],{},[635,1027,1028],{},[321,1029,783],{},[635,1031,1032,968,1035,968,1038],{},[321,1033,1034],{},"COMMIT_SHA",[321,1036,1037],{},"GIT_COMMIT",[321,1039,1040],{},"VERCEL_GIT_COMMIT_SHA",[614,1042,1043,1048,1052,1056],{},[635,1044,1045],{},[321,1046,1047],{},"region",[635,1049,1050],{},[321,1051,957],{},[635,1053,1054],{},[321,1055,783],{},[635,1057,1058,968,1061,968,1064],{},[321,1059,1060],{},"FLY_REGION",[321,1062,1063],{},"AWS_REGION",[321,1065,1066],{},"VERCEL_REGION",[835,1068,1070],{"id":1069},"silent-mode","Silent Mode",[303,1072,1073,1074,1076],{},"Use ",[321,1075,703],{}," when your deployment platform captures stdout as its primary log ingestion (GCP Cloud Run, AWS Lambda, Fly.io, Railway, etc.) and you want a drain adapter to control the output format.",[333,1078,1080],{"className":335,"code":1079,"filename":337,"language":338,"meta":339,"style":339},"import { initLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({\n  silent: process.env.NODE_ENV === 'production',\n  drain: createAxiomDrain(),\n})\n",[321,1081,1082,1100,1118,1122,1130,1159,1171],{"__ignoreMap":339},[343,1083,1084,1086,1088,1090,1092,1094,1096,1098],{"class":345,"line":346},[343,1085,350],{"class":349},[343,1087,354],{"class":353},[343,1089,358],{"class":357},[343,1091,361],{"class":353},[343,1093,364],{"class":349},[343,1095,367],{"class":353},[343,1097,371],{"class":370},[343,1099,374],{"class":353},[343,1101,1102,1104,1106,1108,1110,1112,1114,1116],{"class":345,"line":377},[343,1103,350],{"class":349},[343,1105,354],{"class":353},[343,1107,384],{"class":357},[343,1109,361],{"class":353},[343,1111,364],{"class":349},[343,1113,367],{"class":353},[343,1115,393],{"class":370},[343,1117,374],{"class":353},[343,1119,1120],{"class":345,"line":398},[343,1121,402],{"emptyLinePlaceholder":401},[343,1123,1124,1126,1128],{"class":345,"line":405},[343,1125,323],{"class":408},[343,1127,411],{"class":357},[343,1129,414],{"class":353},[343,1131,1132,1134,1136,1139,1141,1143,1145,1148,1151,1153,1155,1157],{"class":345,"line":417},[343,1133,491],{"class":420},[343,1135,424],{"class":353},[343,1137,1138],{"class":357}," process",[343,1140,927],{"class":353},[343,1142,663],{"class":357},[343,1144,927],{"class":353},[343,1146,1147],{"class":357},"NODE_ENV ",[343,1149,1150],{"class":353},"===",[343,1152,367],{"class":353},[343,1154,467],{"class":370},[343,1156,454],{"class":353},[343,1158,431],{"class":353},[343,1160,1161,1163,1165,1167,1169],{"class":345,"line":434},[343,1162,588],{"class":420},[343,1164,424],{"class":353},[343,1166,384],{"class":408},[343,1168,595],{"class":357},[343,1170,431],{"class":353},[343,1172,1173,1175],{"class":345,"line":475},[343,1174,603],{"class":353},[343,1176,606],{"class":357},[1178,1179,1182,1183,1185],"callout",{"color":1180,"icon":1181},"warning","i-lucide-alert-triangle","If ",[321,1184,703],{}," is enabled without a drain, events are built and sampled but never output anywhere. evlog will warn you about this at startup.",[316,1187,1189],{"id":1188},"middleware-options","Middleware Options",[303,1191,1192],{},"These options are passed to the framework middleware\u002Fplugin. They control per-request behavior: which routes to log, how to drain and enrich events, and custom tail sampling logic.",[1194,1195,1196,1413,1510],"code-group",{},[333,1197,1199],{"className":335,"code":1198,"filename":160,"language":338,"meta":339,"style":339},"app.use(evlog({\n  include: ['\u002Fapi\u002F**'],\n  exclude: ['\u002Fapi\u002Fhealth'],\n  routes: { '\u002Fapi\u002Fauth\u002F**': { service: 'auth' } },\n  drain: createAxiomDrain(),\n  enrich: (ctx) => { ctx.event.region = process.env.FLY_REGION },\n  keep: (ctx) => { if (ctx.duration > 2000) ctx.shouldKeep = true },\n}))\n",[321,1200,1201,1219,1240,1260,1295,1307,1355,1406],{"__ignoreMap":339},[343,1202,1203,1206,1208,1211,1213,1215,1217],{"class":345,"line":346},[343,1204,1205],{"class":357},"app",[343,1207,927],{"class":353},[343,1209,1210],{"class":408},"use",[343,1212,411],{"class":357},[343,1214,371],{"class":408},[343,1216,411],{"class":357},[343,1218,414],{"class":353},[343,1220,1221,1224,1226,1228,1230,1233,1235,1238],{"class":345,"line":377},[343,1222,1223],{"class":420},"  include",[343,1225,424],{"class":353},[343,1227,563],{"class":357},[343,1229,454],{"class":353},[343,1231,1232],{"class":370},"\u002Fapi\u002F**",[343,1234,454],{"class":353},[343,1236,1237],{"class":357},"]",[343,1239,431],{"class":353},[343,1241,1242,1245,1247,1249,1251,1254,1256,1258],{"class":345,"line":398},[343,1243,1244],{"class":420},"  exclude",[343,1246,424],{"class":353},[343,1248,563],{"class":357},[343,1250,454],{"class":353},[343,1252,1253],{"class":370},"\u002Fapi\u002Fhealth",[343,1255,454],{"class":353},[343,1257,1237],{"class":357},[343,1259,431],{"class":353},[343,1261,1262,1265,1267,1269,1271,1274,1276,1278,1280,1282,1284,1286,1289,1291,1293],{"class":345,"line":405},[343,1263,1264],{"class":420},"  routes",[343,1266,424],{"class":353},[343,1268,354],{"class":353},[343,1270,367],{"class":353},[343,1272,1273],{"class":420},"\u002Fapi\u002Fauth\u002F**",[343,1275,454],{"class":353},[343,1277,424],{"class":353},[343,1279,354],{"class":353},[343,1281,444],{"class":420},[343,1283,424],{"class":353},[343,1285,367],{"class":353},[343,1287,1288],{"class":370},"auth",[343,1290,454],{"class":353},[343,1292,361],{"class":353},[343,1294,472],{"class":353},[343,1296,1297,1299,1301,1303,1305],{"class":345,"line":417},[343,1298,588],{"class":420},[343,1300,424],{"class":353},[343,1302,384],{"class":408},[343,1304,595],{"class":357},[343,1306,431],{"class":353},[343,1308,1309,1312,1314,1316,1320,1322,1326,1328,1331,1333,1336,1338,1340,1343,1345,1347,1349,1351,1353],{"class":345,"line":434},[343,1310,1311],{"class":408},"  enrich",[343,1313,424],{"class":353},[343,1315,887],{"class":353},[343,1317,1319],{"class":1318},"sHdIc","ctx",[343,1321,324],{"class":353},[343,1323,1325],{"class":1324},"spNyl"," =>",[343,1327,354],{"class":353},[343,1329,1330],{"class":357}," ctx",[343,1332,927],{"class":353},[343,1334,1335],{"class":357},"event",[343,1337,927],{"class":353},[343,1339,1047],{"class":357},[343,1341,1342],{"class":353}," =",[343,1344,1138],{"class":357},[343,1346,927],{"class":353},[343,1348,663],{"class":357},[343,1350,927],{"class":353},[343,1352,1060],{"class":357},[343,1354,472],{"class":353},[343,1356,1357,1360,1362,1364,1366,1368,1370,1372,1375,1377,1379,1381,1384,1387,1390,1393,1395,1397,1400,1402,1404],{"class":345,"line":475},[343,1358,1359],{"class":408},"  keep",[343,1361,424],{"class":353},[343,1363,887],{"class":353},[343,1365,1319],{"class":1318},[343,1367,324],{"class":353},[343,1369,1325],{"class":1324},[343,1371,354],{"class":353},[343,1373,1374],{"class":349}," if",[343,1376,887],{"class":420},[343,1378,1319],{"class":357},[343,1380,927],{"class":353},[343,1382,1383],{"class":357},"duration",[343,1385,1386],{"class":353}," >",[343,1388,1389],{"class":551}," 2000",[343,1391,1392],{"class":420},") ",[343,1394,1319],{"class":357},[343,1396,927],{"class":353},[343,1398,1399],{"class":357},"shouldKeep",[343,1401,1342],{"class":353},[343,1403,428],{"class":427},[343,1405,472],{"class":353},[343,1407,1408,1410],{"class":345,"line":488},[343,1409,603],{"class":353},[343,1411,1412],{"class":357},"))\n",[333,1414,1416],{"className":335,"code":1415,"filename":155,"language":338,"meta":339,"style":339},"app.use(evlog({\n  include: ['\u002Fapi\u002F**'],\n  drain: createAxiomDrain(),\n  enrich: (ctx) => { ctx.event.region = process.env.FLY_REGION },\n}))\n",[321,1417,1418,1434,1452,1464,1504],{"__ignoreMap":339},[343,1419,1420,1422,1424,1426,1428,1430,1432],{"class":345,"line":346},[343,1421,1205],{"class":357},[343,1423,927],{"class":353},[343,1425,1210],{"class":408},[343,1427,411],{"class":357},[343,1429,371],{"class":408},[343,1431,411],{"class":357},[343,1433,414],{"class":353},[343,1435,1436,1438,1440,1442,1444,1446,1448,1450],{"class":345,"line":377},[343,1437,1223],{"class":420},[343,1439,424],{"class":353},[343,1441,563],{"class":357},[343,1443,454],{"class":353},[343,1445,1232],{"class":370},[343,1447,454],{"class":353},[343,1449,1237],{"class":357},[343,1451,431],{"class":353},[343,1453,1454,1456,1458,1460,1462],{"class":345,"line":398},[343,1455,588],{"class":420},[343,1457,424],{"class":353},[343,1459,384],{"class":408},[343,1461,595],{"class":357},[343,1463,431],{"class":353},[343,1465,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502],{"class":345,"line":405},[343,1467,1311],{"class":408},[343,1469,424],{"class":353},[343,1471,887],{"class":353},[343,1473,1319],{"class":1318},[343,1475,324],{"class":353},[343,1477,1325],{"class":1324},[343,1479,354],{"class":353},[343,1481,1330],{"class":357},[343,1483,927],{"class":353},[343,1485,1335],{"class":357},[343,1487,927],{"class":353},[343,1489,1047],{"class":357},[343,1491,1342],{"class":353},[343,1493,1138],{"class":357},[343,1495,927],{"class":353},[343,1497,663],{"class":357},[343,1499,927],{"class":353},[343,1501,1060],{"class":357},[343,1503,472],{"class":353},[343,1505,1506,1508],{"class":345,"line":417},[343,1507,603],{"class":353},[343,1509,1412],{"class":357},[333,1511,1513],{"className":335,"code":1512,"filename":165,"language":338,"meta":339,"style":339},"await app.register(evlog, {\n  include: ['\u002Fapi\u002F**'],\n  drain: createAxiomDrain(),\n})\n",[321,1514,1515,1536,1554,1566],{"__ignoreMap":339},[343,1516,1517,1520,1523,1525,1528,1531,1533],{"class":345,"line":346},[343,1518,1519],{"class":349},"await",[343,1521,1522],{"class":357}," app",[343,1524,927],{"class":353},[343,1526,1527],{"class":408},"register",[343,1529,1530],{"class":357},"(evlog",[343,1532,457],{"class":353},[343,1534,1535],{"class":353}," {\n",[343,1537,1538,1540,1542,1544,1546,1548,1550,1552],{"class":345,"line":377},[343,1539,1223],{"class":420},[343,1541,424],{"class":353},[343,1543,563],{"class":357},[343,1545,454],{"class":353},[343,1547,1232],{"class":370},[343,1549,454],{"class":353},[343,1551,1237],{"class":357},[343,1553,431],{"class":353},[343,1555,1556,1558,1560,1562,1564],{"class":345,"line":398},[343,1557,588],{"class":420},[343,1559,424],{"class":353},[343,1561,384],{"class":408},[343,1563,595],{"class":357},[343,1565,431],{"class":353},[343,1567,1568,1570],{"class":345,"line":405},[343,1569,603],{"class":353},[343,1571,606],{"class":357},[608,1573,1574,1586],{},[611,1575,1576],{},[614,1577,1578,1580,1582,1584],{},[617,1579,619],{},[617,1581,622],{},[617,1583,625],{},[617,1585,628],{},[630,1587,1588,1607,1625,1644,1661,1680],{},[614,1589,1590,1595,1600,1604],{},[635,1591,1592],{},[321,1593,1594],{},"include",[635,1596,1597],{},[321,1598,1599],{},"string[]",[635,1601,1602],{},[321,1603,783],{},[635,1605,1606],{},"Route glob patterns to log. If not set, all routes are logged",[614,1608,1609,1614,1618,1622],{},[635,1610,1611],{},[321,1612,1613],{},"exclude",[635,1615,1616],{},[321,1617,1599],{},[635,1619,1620],{},[321,1621,783],{},[635,1623,1624],{},"Route patterns to exclude. Exclusions take precedence over inclusions",[614,1626,1627,1632,1637,1641],{},[635,1628,1629],{},[321,1630,1631],{},"routes",[635,1633,1634],{},[321,1635,1636],{},"Record\u003Cstring, { service: string }>",[635,1638,1639],{},[321,1640,783],{},[635,1642,1643],{},"Route-specific service name overrides",[614,1645,1646,1650,1654,1658],{},[635,1647,1648],{},[321,1649,821],{},[635,1651,1652],{},[321,1653,826],{},[635,1655,1656],{},[321,1657,783],{},[635,1659,1660],{},"Drain callback called with every emitted event",[614,1662,1663,1668,1673,1677],{},[635,1664,1665],{},[321,1666,1667],{},"enrich",[635,1669,1670],{},[321,1671,1672],{},"(ctx: EnrichContext) => void",[635,1674,1675],{},[321,1676,783],{},[635,1678,1679],{},"Enrich callback called after emit, before drain",[614,1681,1682,1686,1691,1695],{},[635,1683,1684],{},[321,1685,880],{},[635,1687,1688],{},[321,1689,1690],{},"(ctx: TailSamplingContext) => void",[635,1692,1693],{},[321,1694,783],{},[635,1696,1697],{},"Custom tail sampling callback",[1178,1699,1700,1703,1704,968,1707,968,1710,1713,1714,1716,1717,1719],{"color":522,"icon":13},[307,1701,1702],{},"Nuxt and Nitro"," use module config and Nitro hooks (",[321,1705,1706],{},"evlog:drain",[321,1708,1709],{},"evlog:enrich",[321,1711,1712],{},"evlog:emit:keep",") instead of middleware options. See the ",[788,1715,125],{"href":126}," and ",[788,1718,140],{"href":141}," pages.",[835,1721,1723],{"id":1722},"middleware-drain-vs-global-drain","Middleware drain vs global drain",[303,1725,1726,1727,1729,1730,1732],{},"When a middleware ",[321,1728,821],{}," is set, it takes precedence over the global drain from ",[321,1731,330],{},". If no middleware drain is set, the global drain is used as fallback, with the benefit of receiving the full enriched event with request context (method, path, headers).",[333,1734,1736],{"className":335,"code":1735,"filename":337,"language":338,"meta":339,"style":339},"import { initLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({\n  env: { service: 'my-api' },\n  drain: createAxiomDrain(), \u002F\u002F fallback: used by singleton log API AND middleware (if no middleware drain)\n})\n\napp.use(evlog({\n  \u002F\u002F no drain here - falls back to globalDrain from initLogger, with full request context\n}))\n",[321,1737,1738,1756,1774,1778,1786,1806,1822,1828,1832,1848,1853],{"__ignoreMap":339},[343,1739,1740,1742,1744,1746,1748,1750,1752,1754],{"class":345,"line":346},[343,1741,350],{"class":349},[343,1743,354],{"class":353},[343,1745,358],{"class":357},[343,1747,361],{"class":353},[343,1749,364],{"class":349},[343,1751,367],{"class":353},[343,1753,371],{"class":370},[343,1755,374],{"class":353},[343,1757,1758,1760,1762,1764,1766,1768,1770,1772],{"class":345,"line":377},[343,1759,350],{"class":349},[343,1761,354],{"class":353},[343,1763,384],{"class":357},[343,1765,361],{"class":353},[343,1767,364],{"class":349},[343,1769,367],{"class":353},[343,1771,393],{"class":370},[343,1773,374],{"class":353},[343,1775,1776],{"class":345,"line":398},[343,1777,402],{"emptyLinePlaceholder":401},[343,1779,1780,1782,1784],{"class":345,"line":405},[343,1781,323],{"class":408},[343,1783,411],{"class":357},[343,1785,414],{"class":353},[343,1787,1788,1790,1792,1794,1796,1798,1800,1802,1804],{"class":345,"line":417},[343,1789,437],{"class":420},[343,1791,424],{"class":353},[343,1793,354],{"class":353},[343,1795,444],{"class":420},[343,1797,424],{"class":353},[343,1799,367],{"class":353},[343,1801,451],{"class":370},[343,1803,454],{"class":353},[343,1805,472],{"class":353},[343,1807,1808,1810,1812,1814,1816,1818],{"class":345,"line":434},[343,1809,588],{"class":420},[343,1811,424],{"class":353},[343,1813,384],{"class":408},[343,1815,595],{"class":357},[343,1817,457],{"class":353},[343,1819,1821],{"class":1820},"sHwdD"," \u002F\u002F fallback: used by singleton log API AND middleware (if no middleware drain)\n",[343,1823,1824,1826],{"class":345,"line":475},[343,1825,603],{"class":353},[343,1827,606],{"class":357},[343,1829,1830],{"class":345,"line":488},[343,1831,402],{"emptyLinePlaceholder":401},[343,1833,1834,1836,1838,1840,1842,1844,1846],{"class":345,"line":500},[343,1835,1205],{"class":357},[343,1837,927],{"class":353},[343,1839,1210],{"class":408},[343,1841,411],{"class":357},[343,1843,371],{"class":408},[343,1845,411],{"class":357},[343,1847,414],{"class":353},[343,1849,1850],{"class":345,"line":512},[343,1851,1852],{"class":1820},"  \u002F\u002F no drain here - falls back to globalDrain from initLogger, with full request context\n",[343,1854,1855,1857],{"class":345,"line":529},[343,1856,603],{"class":353},[343,1858,1412],{"class":357},[316,1860,1862],{"id":1861},"framework-specific-options","Framework-Specific Options",[303,1864,1865],{},"Some frameworks have additional options beyond the shared config:",[835,1867,125],{"id":1868},"nuxt",[303,1870,1871,1872,1875,1876,1878],{},"The Nuxt module accepts all global options and middleware options in ",[321,1873,1874],{},"nuxt.config.ts"," under the ",[321,1877,371],{}," key, plus:",[608,1880,1881,1893],{},[611,1882,1883],{},[614,1884,1885,1887,1889,1891],{},[617,1886,619],{},[617,1888,622],{},[617,1890,625],{},[617,1892,628],{},[630,1894,1895,1913,1931,1950],{},[614,1896,1897,1902,1906,1910],{},[635,1898,1899],{},[321,1900,1901],{},"console",[635,1903,1904],{},[321,1905,644],{},[635,1907,1908],{},[321,1909,649],{},[635,1911,1912],{},"Enable\u002Fdisable browser console output (client-side only)",[614,1914,1915,1920,1924,1928],{},[635,1916,1917],{},[321,1918,1919],{},"transport.enabled",[635,1921,1922],{},[321,1923,644],{},[635,1925,1926],{},[321,1927,655],{},[635,1929,1930],{},"Send client logs to the server via API endpoint",[614,1932,1933,1938,1942,1947],{},[635,1934,1935],{},[321,1936,1937],{},"transport.endpoint",[635,1939,1940],{},[321,1941,957],{},[635,1943,1944],{},[321,1945,1946],{},"'\u002Fapi\u002F_evlog\u002Fingest'",[635,1948,1949],{},"Custom transport endpoint",[614,1951,1952,1957,1962,1967],{},[635,1953,1954],{},[321,1955,1956],{},"transport.credentials",[635,1958,1959],{},[321,1960,1961],{},"RequestCredentials",[635,1963,1964],{},[321,1965,1966],{},"'same-origin'",[635,1968,1969,1970,1973],{},"Fetch credentials mode (",[321,1971,1972],{},"'include'"," for cross-origin endpoints)",[303,1975,1976,1977,927],{},"See the full ",[788,1978,1980],{"href":1979},"\u002Fframeworks\u002Fnuxt#configuration","Nuxt configuration",[835,1982,140],{"id":1983},"nitro",[303,1985,1986,1987,968,1989,968,1991,968,1993,968,1995,968,1997,968,1999,2001,2002,2004,2005,2008],{},"The Nitro module accepts ",[321,1988,639],{},[321,1990,663],{},[321,1992,681],{},[321,1994,703],{},[321,1996,773],{},[321,1998,1594],{},[321,2000,1613],{},", and ",[321,2003,1631],{}," in ",[321,2006,2007],{},"nitro.config.ts",". Drain and enrichment are done via Nitro hooks.",[303,2010,2011,2012,927],{},"See ",[788,2013,2015],{"href":2014},"\u002Fframeworks\u002Fnitro#drain--enrichers","Nitro drain & enrichers",[2017,2018,2019],"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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}",{"title":339,"searchDepth":377,"depth":377,"links":2021},[2022,2029,2032],{"id":318,"depth":377,"text":2023,"children":2024},"Global Options (initLogger)",[2025,2027,2028],{"id":837,"depth":398,"text":2026},"minLevel vs sampling",{"id":916,"depth":398,"text":917},{"id":1069,"depth":398,"text":1070},{"id":1188,"depth":377,"text":1189,"children":2030},[2031],{"id":1722,"depth":398,"text":1723},{"id":1861,"depth":377,"text":1862,"children":2033},[2034,2035],{"id":1868,"depth":398,"text":125},{"id":1983,"depth":398,"text":140},"Complete reference for all evlog configuration options including global logger settings, middleware options, environment context, and framework-specific overrides.","md",[2039,2042],{"label":86,"icon":89,"to":87,"color":2040,"variant":2041},"neutral","subtle",{"label":2043,"icon":291,"to":209,"color":2040,"variant":2041},"Drain Adapters",{},{"icon":84},{"title":81,"description":2036},"MY1ROxKRzLoZyqk5RrW9lF08hU98Sh_4hCk2REV9ybc",[2049,2051],{"title":76,"path":77,"stem":78,"description":2050,"icon":79,"children":-1},"Understand the full lifecycle of an evlog event, from creation to drain. Covers all three modes (simple logging, wide events, request logging), sampling, enrichment, and delivery.",{"title":86,"path":87,"stem":88,"description":2052,"icon":89,"children":-1},"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.",1776700921437]