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