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