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