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