[{"data":1,"prerenderedAt":2506},["ShallowReactive",2],{"navigation_docs":3,"-reference-configuration":439,"-reference-configuration-surround":2501},[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":2489,"extension":2490,"links":2491,"meta":2497,"navigation":2498,"path":415,"seo":2499,"stem":416,"__hash__":2500},"docs\u002F6.reference\u002F1.configuration.md",{"type":442,"value":443,"toc":2473},"minimark",[444,457,467,474,749,976,1013,1020,1077,1093,1097,1106,1244,1248,1254,1354,1363,1367,1370,2026,2152,2174,2178,2187,2312,2316,2319,2322,2332,2427,2434,2437,2462,2469],[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,1005,1008,1009,1012],{},[463,979,980],{},"RedactConfig"," fields (when ",[463,983,938],{}," is an object): ",[463,986,987],{},"keys"," (key names at any depth), ",[463,990,991],{},"keyPatterns"," (regex on key names), ",[463,994,995],{},"paths"," (exact dot-notation), ",[463,998,999],{},"patterns"," (regex on string values), ",[463,1002,1003],{},"builtins",", ",[463,1006,1007],{},"replacement",". Full table in ",[930,1010,66],{"href":1011},"\u002Flearn\u002Fredaction#configuration-reference",".",[1014,1015,1017,1019],"h3",{"id":1016},"minlevel-vs-sampling",[463,1018,887],{}," vs sampling",[1021,1022,1023,1061],"ul",{},[1024,1025,1026,1030,1031,1034,1035,1038,1039,1042,1043,1046,1047,1050,1051,1056,1057,1060],"li",{},[449,1027,1028],{},[463,1029,887],{}," is a ",[449,1032,1033],{},"hard threshold"," on the simple ",[463,1036,1037],{},"log.*"," API: levels below the threshold are never emitted. It does ",[449,1040,1041],{},"not"," apply to wide events from ",[463,1044,1045],{},"useLogger"," \u002F ",[463,1048,1049],{},"createLogger().emit()"," — use ",[449,1052,1053],{},[463,1054,1055],{},"sampling.rates"," (and tail ",[463,1058,1059],{},"keep",") for request volume.",[1024,1062,1063,1066,1067,1069,1070,1073,1074,1076],{},[449,1064,1065],{},"Head sampling"," (",[463,1068,1055],{},") is ",[449,1071,1072],{},"probabilistic"," on what is already allowed by ",[463,1075,887],{}," for simple logs.",[445,1078,1079,1080,1046,1083,1086,1087,1089,1090,1092],{},"Evaluation order for ",[463,1081,1082],{},"log.info",[463,1084,1085],{},"log.debug"," \u002F etc.: ",[463,1088,781],{}," → ",[463,1091,887],{}," → head sampling → output.",[1014,1094,1096],{"id":1095},"environment-context","Environment Context",[445,1098,1099,1100,1102,1103,1012],{},"The ",[463,1101,805],{}," option controls the fields included in every log event. Most values are auto-detected from environment variables and ",[463,1104,1105],{},"package.json",[750,1107,1108,1122],{},[753,1109,1110],{},[756,1111,1112,1115,1117,1119],{},[759,1113,1114],{},"Field",[759,1116,764],{},[759,1118,767],{},[759,1120,1121],{},"Auto-detected from",[772,1123,1124,1149,1169,1192,1218],{},[756,1125,1126,1131,1136,1141],{},[777,1127,1128],{},[463,1129,1130],{},"service",[777,1132,1133],{},[463,1134,1135],{},"string",[777,1137,1138],{},[463,1139,1140],{},"'app'",[777,1142,1143,1004,1146,1148],{},[463,1144,1145],{},"SERVICE_NAME",[463,1147,1105],{}," name",[756,1150,1151,1156,1160,1165],{},[777,1152,1153],{},[463,1154,1155],{},"environment",[777,1157,1158],{},[463,1159,1135],{},[777,1161,1162],{},[463,1163,1164],{},"'development'",[777,1166,1167],{},[463,1168,838],{},[756,1170,1171,1176,1180,1184],{},[777,1172,1173],{},[463,1174,1175],{},"version",[777,1177,1178],{},[463,1179,1135],{},[777,1181,1182],{},[463,1183,925],{},[777,1185,1186,1004,1189,1191],{},[463,1187,1188],{},"APP_VERSION",[463,1190,1105],{}," version",[756,1193,1194,1199,1203,1207],{},[777,1195,1196],{},[463,1197,1198],{},"commitHash",[777,1200,1201],{},[463,1202,1135],{},[777,1204,1205],{},[463,1206,925],{},[777,1208,1209,1004,1212,1004,1215],{},[463,1210,1211],{},"COMMIT_SHA",[463,1213,1214],{},"GIT_COMMIT",[463,1216,1217],{},"VERCEL_GIT_COMMIT_SHA",[756,1219,1220,1225,1229,1233],{},[777,1221,1222],{},[463,1223,1224],{},"region",[777,1226,1227],{},[463,1228,1135],{},[777,1230,1231],{},[463,1232,925],{},[777,1234,1235,1004,1238,1004,1241],{},[463,1236,1237],{},"FLY_REGION",[463,1239,1240],{},"AWS_REGION",[463,1242,1243],{},"VERCEL_REGION",[1014,1245,1247],{"id":1246},"silent-mode","Silent Mode",[445,1249,1250,1251,1253],{},"Use ",[463,1252,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,1255,1257],{"className":477,"code":1256,"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,1258,1259,1277,1295,1299,1307,1336,1348],{"__ignoreMap":481},[485,1260,1261,1263,1265,1267,1269,1271,1273,1275],{"class":487,"line":488},[485,1262,492],{"class":491},[485,1264,496],{"class":495},[485,1266,500],{"class":499},[485,1268,503],{"class":495},[485,1270,506],{"class":491},[485,1272,509],{"class":495},[485,1274,513],{"class":512},[485,1276,516],{"class":495},[485,1278,1279,1281,1283,1285,1287,1289,1291,1293],{"class":487,"line":519},[485,1280,492],{"class":491},[485,1282,496],{"class":495},[485,1284,526],{"class":499},[485,1286,503],{"class":495},[485,1288,506],{"class":491},[485,1290,509],{"class":495},[485,1292,535],{"class":512},[485,1294,516],{"class":495},[485,1296,1297],{"class":487,"line":540},[485,1298,544],{"emptyLinePlaceholder":543},[485,1300,1301,1303,1305],{"class":487,"line":547},[485,1302,465],{"class":550},[485,1304,553],{"class":499},[485,1306,556],{"class":495},[485,1308,1309,1311,1313,1316,1318,1320,1322,1325,1328,1330,1332,1334],{"class":487,"line":559},[485,1310,633],{"class":562},[485,1312,566],{"class":495},[485,1314,1315],{"class":499}," process",[485,1317,1012],{"class":495},[485,1319,805],{"class":499},[485,1321,1012],{"class":495},[485,1323,1324],{"class":499},"NODE_ENV ",[485,1326,1327],{"class":495},"===",[485,1329,509],{"class":495},[485,1331,609],{"class":512},[485,1333,596],{"class":495},[485,1335,573],{"class":495},[485,1337,1338,1340,1342,1344,1346],{"class":487,"line":576},[485,1339,730],{"class":562},[485,1341,566],{"class":495},[485,1343,526],{"class":550},[485,1345,737],{"class":499},[485,1347,573],{"class":495},[485,1349,1350,1352],{"class":487,"line":617},[485,1351,745],{"class":495},[485,1353,748],{"class":499},[1355,1356,1359,1360,1362],"callout",{"color":1357,"icon":1358},"warning","i-lucide-alert-triangle","If ",[463,1361,845],{}," is enabled without a drain, events are built and sampled but never output anywhere. evlog will warn you about this at startup.",[458,1364,1366],{"id":1365},"middleware-options","Middleware Options",[445,1368,1369],{},"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.",[1371,1372,1373,1673,1867,1964],"code-group",{},[475,1374,1376],{"className":477,"code":1375,"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,1377,1378,1384,1404,1422,1426,1466,1482,1503,1523,1558,1570,1616,1667],{"__ignoreMap":481},[485,1379,1380],{"class":487,"line":488},[485,1381,1383],{"class":1382},"sHwdD","\u002F\u002F lib\u002Fevlog.ts\n",[485,1385,1386,1388,1390,1393,1395,1397,1399,1402],{"class":487,"line":519},[485,1387,492],{"class":491},[485,1389,496],{"class":495},[485,1391,1392],{"class":499}," createEvlog",[485,1394,503],{"class":495},[485,1396,506],{"class":491},[485,1398,509],{"class":495},[485,1400,1401],{"class":512},"evlog\u002Fnext",[485,1403,516],{"class":495},[485,1405,1406,1408,1410,1412,1414,1416,1418,1420],{"class":487,"line":540},[485,1407,492],{"class":491},[485,1409,496],{"class":495},[485,1411,526],{"class":499},[485,1413,503],{"class":495},[485,1415,506],{"class":491},[485,1417,509],{"class":495},[485,1419,535],{"class":512},[485,1421,516],{"class":495},[485,1423,1424],{"class":487,"line":547},[485,1425,544],{"emptyLinePlaceholder":543},[485,1427,1428,1431,1435,1437,1440,1442,1445,1447,1450,1452,1455,1457,1460,1462,1464],{"class":487,"line":559},[485,1429,1430],{"class":491},"export",[485,1432,1434],{"class":1433},"spNyl"," const",[485,1436,496],{"class":495},[485,1438,1439],{"class":499}," withEvlog",[485,1441,599],{"class":495},[485,1443,1444],{"class":499}," useLogger",[485,1446,599],{"class":495},[485,1448,1449],{"class":499}," log",[485,1451,599],{"class":495},[485,1453,1454],{"class":499}," createError ",[485,1456,745],{"class":495},[485,1458,1459],{"class":495}," =",[485,1461,1392],{"class":550},[485,1463,553],{"class":499},[485,1465,556],{"class":495},[485,1467,1468,1471,1473,1475,1478,1480],{"class":487,"line":576},[485,1469,1470],{"class":562},"  service",[485,1472,566],{"class":495},[485,1474,509],{"class":495},[485,1476,1477],{"class":512},"my-app",[485,1479,596],{"class":495},[485,1481,573],{"class":495},[485,1483,1484,1487,1489,1491,1493,1496,1498,1501],{"class":487,"line":617},[485,1485,1486],{"class":562},"  include",[485,1488,566],{"class":495},[485,1490,705],{"class":499},[485,1492,596],{"class":495},[485,1494,1495],{"class":512},"\u002Fapi\u002F**",[485,1497,596],{"class":495},[485,1499,1500],{"class":499},"]",[485,1502,573],{"class":495},[485,1504,1505,1508,1510,1512,1514,1517,1519,1521],{"class":487,"line":630},[485,1506,1507],{"class":562},"  exclude",[485,1509,566],{"class":495},[485,1511,705],{"class":499},[485,1513,596],{"class":495},[485,1515,1516],{"class":512},"\u002Fapi\u002Fhealth",[485,1518,596],{"class":495},[485,1520,1500],{"class":499},[485,1522,573],{"class":495},[485,1524,1525,1528,1530,1532,1534,1537,1539,1541,1543,1545,1547,1549,1552,1554,1556],{"class":487,"line":642},[485,1526,1527],{"class":562},"  routes",[485,1529,566],{"class":495},[485,1531,496],{"class":495},[485,1533,509],{"class":495},[485,1535,1536],{"class":562},"\u002Fapi\u002Fauth\u002F**",[485,1538,596],{"class":495},[485,1540,566],{"class":495},[485,1542,496],{"class":495},[485,1544,586],{"class":562},[485,1546,566],{"class":495},[485,1548,509],{"class":495},[485,1550,1551],{"class":512},"auth",[485,1553,596],{"class":495},[485,1555,503],{"class":495},[485,1557,614],{"class":495},[485,1559,1560,1562,1564,1566,1568],{"class":487,"line":654},[485,1561,730],{"class":562},[485,1563,566],{"class":495},[485,1565,526],{"class":550},[485,1567,737],{"class":499},[485,1569,573],{"class":495},[485,1571,1572,1575,1577,1579,1583,1585,1588,1590,1593,1595,1598,1600,1602,1604,1606,1608,1610,1612,1614],{"class":487,"line":671},[485,1573,1574],{"class":550},"  enrich",[485,1576,566],{"class":495},[485,1578,1066],{"class":495},[485,1580,1582],{"class":1581},"sHdIc","ctx",[485,1584,466],{"class":495},[485,1586,1587],{"class":1433}," =>",[485,1589,496],{"class":495},[485,1591,1592],{"class":499}," ctx",[485,1594,1012],{"class":495},[485,1596,1597],{"class":499},"event",[485,1599,1012],{"class":495},[485,1601,1224],{"class":499},[485,1603,1459],{"class":495},[485,1605,1315],{"class":499},[485,1607,1012],{"class":495},[485,1609,805],{"class":499},[485,1611,1012],{"class":495},[485,1613,1237],{"class":499},[485,1615,614],{"class":495},[485,1617,1618,1621,1623,1625,1627,1629,1631,1633,1636,1638,1640,1642,1645,1648,1651,1654,1656,1658,1661,1663,1665],{"class":487,"line":727},[485,1619,1620],{"class":550},"  keep",[485,1622,566],{"class":495},[485,1624,1066],{"class":495},[485,1626,1582],{"class":1581},[485,1628,466],{"class":495},[485,1630,1587],{"class":1433},[485,1632,496],{"class":495},[485,1634,1635],{"class":491}," if",[485,1637,1066],{"class":562},[485,1639,1582],{"class":499},[485,1641,1012],{"class":495},[485,1643,1644],{"class":499},"duration",[485,1646,1647],{"class":495}," >",[485,1649,1650],{"class":693}," 2000",[485,1652,1653],{"class":562},") ",[485,1655,1582],{"class":499},[485,1657,1012],{"class":495},[485,1659,1660],{"class":499},"shouldKeep",[485,1662,1459],{"class":495},[485,1664,570],{"class":569},[485,1666,614],{"class":495},[485,1668,1669,1671],{"class":487,"line":742},[485,1670,745],{"class":495},[485,1672,748],{"class":499},[475,1674,1676],{"className":477,"code":1675,"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,1677,1678,1696,1714,1732,1764,1776,1816,1860],{"__ignoreMap":481},[485,1679,1680,1683,1685,1688,1690,1692,1694],{"class":487,"line":488},[485,1681,1682],{"class":499},"app",[485,1684,1012],{"class":495},[485,1686,1687],{"class":550},"use",[485,1689,553],{"class":499},[485,1691,513],{"class":550},[485,1693,553],{"class":499},[485,1695,556],{"class":495},[485,1697,1698,1700,1702,1704,1706,1708,1710,1712],{"class":487,"line":519},[485,1699,1486],{"class":562},[485,1701,566],{"class":495},[485,1703,705],{"class":499},[485,1705,596],{"class":495},[485,1707,1495],{"class":512},[485,1709,596],{"class":495},[485,1711,1500],{"class":499},[485,1713,573],{"class":495},[485,1715,1716,1718,1720,1722,1724,1726,1728,1730],{"class":487,"line":540},[485,1717,1507],{"class":562},[485,1719,566],{"class":495},[485,1721,705],{"class":499},[485,1723,596],{"class":495},[485,1725,1516],{"class":512},[485,1727,596],{"class":495},[485,1729,1500],{"class":499},[485,1731,573],{"class":495},[485,1733,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762],{"class":487,"line":547},[485,1735,1527],{"class":562},[485,1737,566],{"class":495},[485,1739,496],{"class":495},[485,1741,509],{"class":495},[485,1743,1536],{"class":562},[485,1745,596],{"class":495},[485,1747,566],{"class":495},[485,1749,496],{"class":495},[485,1751,586],{"class":562},[485,1753,566],{"class":495},[485,1755,509],{"class":495},[485,1757,1551],{"class":512},[485,1759,596],{"class":495},[485,1761,503],{"class":495},[485,1763,614],{"class":495},[485,1765,1766,1768,1770,1772,1774],{"class":487,"line":559},[485,1767,730],{"class":562},[485,1769,566],{"class":495},[485,1771,526],{"class":550},[485,1773,737],{"class":499},[485,1775,573],{"class":495},[485,1777,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810,1812,1814],{"class":487,"line":576},[485,1779,1574],{"class":550},[485,1781,566],{"class":495},[485,1783,1066],{"class":495},[485,1785,1582],{"class":1581},[485,1787,466],{"class":495},[485,1789,1587],{"class":1433},[485,1791,496],{"class":495},[485,1793,1592],{"class":499},[485,1795,1012],{"class":495},[485,1797,1597],{"class":499},[485,1799,1012],{"class":495},[485,1801,1224],{"class":499},[485,1803,1459],{"class":495},[485,1805,1315],{"class":499},[485,1807,1012],{"class":495},[485,1809,805],{"class":499},[485,1811,1012],{"class":495},[485,1813,1237],{"class":499},[485,1815,614],{"class":495},[485,1817,1818,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1858],{"class":487,"line":617},[485,1819,1620],{"class":550},[485,1821,566],{"class":495},[485,1823,1066],{"class":495},[485,1825,1582],{"class":1581},[485,1827,466],{"class":495},[485,1829,1587],{"class":1433},[485,1831,496],{"class":495},[485,1833,1635],{"class":491},[485,1835,1066],{"class":562},[485,1837,1582],{"class":499},[485,1839,1012],{"class":495},[485,1841,1644],{"class":499},[485,1843,1647],{"class":495},[485,1845,1650],{"class":693},[485,1847,1653],{"class":562},[485,1849,1582],{"class":499},[485,1851,1012],{"class":495},[485,1853,1660],{"class":499},[485,1855,1459],{"class":495},[485,1857,570],{"class":569},[485,1859,614],{"class":495},[485,1861,1862,1864],{"class":487,"line":630},[485,1863,745],{"class":495},[485,1865,1866],{"class":499},"))\n",[475,1868,1870],{"className":477,"code":1869,"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,1871,1872,1888,1906,1918,1958],{"__ignoreMap":481},[485,1873,1874,1876,1878,1880,1882,1884,1886],{"class":487,"line":488},[485,1875,1682],{"class":499},[485,1877,1012],{"class":495},[485,1879,1687],{"class":550},[485,1881,553],{"class":499},[485,1883,513],{"class":550},[485,1885,553],{"class":499},[485,1887,556],{"class":495},[485,1889,1890,1892,1894,1896,1898,1900,1902,1904],{"class":487,"line":519},[485,1891,1486],{"class":562},[485,1893,566],{"class":495},[485,1895,705],{"class":499},[485,1897,596],{"class":495},[485,1899,1495],{"class":512},[485,1901,596],{"class":495},[485,1903,1500],{"class":499},[485,1905,573],{"class":495},[485,1907,1908,1910,1912,1914,1916],{"class":487,"line":540},[485,1909,730],{"class":562},[485,1911,566],{"class":495},[485,1913,526],{"class":550},[485,1915,737],{"class":499},[485,1917,573],{"class":495},[485,1919,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954,1956],{"class":487,"line":547},[485,1921,1574],{"class":550},[485,1923,566],{"class":495},[485,1925,1066],{"class":495},[485,1927,1582],{"class":1581},[485,1929,466],{"class":495},[485,1931,1587],{"class":1433},[485,1933,496],{"class":495},[485,1935,1592],{"class":499},[485,1937,1012],{"class":495},[485,1939,1597],{"class":499},[485,1941,1012],{"class":495},[485,1943,1224],{"class":499},[485,1945,1459],{"class":495},[485,1947,1315],{"class":499},[485,1949,1012],{"class":495},[485,1951,805],{"class":499},[485,1953,1012],{"class":495},[485,1955,1237],{"class":499},[485,1957,614],{"class":495},[485,1959,1960,1962],{"class":487,"line":559},[485,1961,745],{"class":495},[485,1963,1866],{"class":499},[475,1965,1967],{"className":477,"code":1966,"filename":207,"language":480,"meta":481,"style":481},"await app.register(evlog, {\n  include: ['\u002Fapi\u002F**'],\n  drain: createAxiomDrain(),\n})\n",[463,1968,1969,1990,2008,2020],{"__ignoreMap":481},[485,1970,1971,1974,1977,1979,1982,1985,1987],{"class":487,"line":488},[485,1972,1973],{"class":491},"await",[485,1975,1976],{"class":499}," app",[485,1978,1012],{"class":495},[485,1980,1981],{"class":550},"register",[485,1983,1984],{"class":499},"(evlog",[485,1986,599],{"class":495},[485,1988,1989],{"class":495}," {\n",[485,1991,1992,1994,1996,1998,2000,2002,2004,2006],{"class":487,"line":519},[485,1993,1486],{"class":562},[485,1995,566],{"class":495},[485,1997,705],{"class":499},[485,1999,596],{"class":495},[485,2001,1495],{"class":512},[485,2003,596],{"class":495},[485,2005,1500],{"class":499},[485,2007,573],{"class":495},[485,2009,2010,2012,2014,2016,2018],{"class":487,"line":540},[485,2011,730],{"class":562},[485,2013,566],{"class":495},[485,2015,526],{"class":550},[485,2017,737],{"class":499},[485,2019,573],{"class":495},[485,2021,2022,2024],{"class":487,"line":547},[485,2023,745],{"class":495},[485,2025,748],{"class":499},[750,2027,2028,2040],{},[753,2029,2030],{},[756,2031,2032,2034,2036,2038],{},[759,2033,761],{},[759,2035,764],{},[759,2037,767],{},[759,2039,770],{},[772,2041,2042,2061,2079,2098,2115,2134],{},[756,2043,2044,2049,2054,2058],{},[777,2045,2046],{},[463,2047,2048],{},"include",[777,2050,2051],{},[463,2052,2053],{},"string[]",[777,2055,2056],{},[463,2057,925],{},[777,2059,2060],{},"Route glob patterns to log. If not set, all routes are logged",[756,2062,2063,2068,2072,2076],{},[777,2064,2065],{},[463,2066,2067],{},"exclude",[777,2069,2070],{},[463,2071,2053],{},[777,2073,2074],{},[463,2075,925],{},[777,2077,2078],{},"Route patterns to exclude. Exclusions take precedence over inclusions",[756,2080,2081,2086,2091,2095],{},[777,2082,2083],{},[463,2084,2085],{},"routes",[777,2087,2088],{},[463,2089,2090],{},"Record\u003Cstring, { service: string }>",[777,2092,2093],{},[463,2094,925],{},[777,2096,2097],{},"Route-specific service name overrides",[756,2099,2100,2104,2108,2112],{},[777,2101,2102],{},[463,2103,963],{},[777,2105,2106],{},[463,2107,968],{},[777,2109,2110],{},[463,2111,925],{},[777,2113,2114],{},"Drain callback called with every emitted event",[756,2116,2117,2122,2127,2131],{},[777,2118,2119],{},[463,2120,2121],{},"enrich",[777,2123,2124],{},[463,2125,2126],{},"(ctx: EnrichContext) => void",[777,2128,2129],{},[463,2130,925],{},[777,2132,2133],{},"Enrich callback called after emit, before drain",[756,2135,2136,2140,2145,2149],{},[777,2137,2138],{},[463,2139,1059],{},[777,2141,2142],{},[463,2143,2144],{},"(ctx: TailSamplingContext) => void",[777,2146,2147],{},[463,2148,925],{},[777,2150,2151],{},"Custom tail sampling callback",[1355,2153,2154,2157,2158,1004,2161,1004,2164,2167,2168,2170,2171,2173],{"color":664,"icon":13},[449,2155,2156],{},"Nuxt and Nitro"," use module config and Nitro hooks (",[463,2159,2160],{},"evlog:drain",[463,2162,2163],{},"evlog:enrich",[463,2165,2166],{},"evlog:emit:keep",") instead of middleware options. See the ",[930,2169,167],{"href":168}," and ",[930,2172,182],{"href":183}," pages.",[1014,2175,2177],{"id":2176},"middleware-drain-vs-global-drain","Middleware drain vs global drain",[445,2179,2180,2181,2183,2184,2186],{},"When a middleware ",[463,2182,963],{}," is set, it takes precedence over the global drain from ",[463,2185,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,2188,2190],{"className":477,"code":2189,"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,2191,2192,2210,2228,2232,2240,2260,2275,2281,2285,2301,2306],{"__ignoreMap":481},[485,2193,2194,2196,2198,2200,2202,2204,2206,2208],{"class":487,"line":488},[485,2195,492],{"class":491},[485,2197,496],{"class":495},[485,2199,500],{"class":499},[485,2201,503],{"class":495},[485,2203,506],{"class":491},[485,2205,509],{"class":495},[485,2207,513],{"class":512},[485,2209,516],{"class":495},[485,2211,2212,2214,2216,2218,2220,2222,2224,2226],{"class":487,"line":519},[485,2213,492],{"class":491},[485,2215,496],{"class":495},[485,2217,526],{"class":499},[485,2219,503],{"class":495},[485,2221,506],{"class":491},[485,2223,509],{"class":495},[485,2225,535],{"class":512},[485,2227,516],{"class":495},[485,2229,2230],{"class":487,"line":540},[485,2231,544],{"emptyLinePlaceholder":543},[485,2233,2234,2236,2238],{"class":487,"line":547},[485,2235,465],{"class":550},[485,2237,553],{"class":499},[485,2239,556],{"class":495},[485,2241,2242,2244,2246,2248,2250,2252,2254,2256,2258],{"class":487,"line":559},[485,2243,579],{"class":562},[485,2245,566],{"class":495},[485,2247,496],{"class":495},[485,2249,586],{"class":562},[485,2251,566],{"class":495},[485,2253,509],{"class":495},[485,2255,593],{"class":512},[485,2257,596],{"class":495},[485,2259,614],{"class":495},[485,2261,2262,2264,2266,2268,2270,2272],{"class":487,"line":576},[485,2263,730],{"class":562},[485,2265,566],{"class":495},[485,2267,526],{"class":550},[485,2269,737],{"class":499},[485,2271,599],{"class":495},[485,2273,2274],{"class":1382}," \u002F\u002F fallback: used by singleton log API AND middleware (if no middleware drain)\n",[485,2276,2277,2279],{"class":487,"line":617},[485,2278,745],{"class":495},[485,2280,748],{"class":499},[485,2282,2283],{"class":487,"line":630},[485,2284,544],{"emptyLinePlaceholder":543},[485,2286,2287,2289,2291,2293,2295,2297,2299],{"class":487,"line":642},[485,2288,1682],{"class":499},[485,2290,1012],{"class":495},[485,2292,1687],{"class":550},[485,2294,553],{"class":499},[485,2296,513],{"class":550},[485,2298,553],{"class":499},[485,2300,556],{"class":495},[485,2302,2303],{"class":487,"line":654},[485,2304,2305],{"class":1382},"  \u002F\u002F no drain here - falls back to globalDrain from initLogger, with full request context\n",[485,2307,2308,2310],{"class":487,"line":671},[485,2309,745],{"class":495},[485,2311,1866],{"class":499},[458,2313,2315],{"id":2314},"framework-specific-options","Framework-Specific Options",[445,2317,2318],{},"Some frameworks have additional options beyond the shared config:",[1014,2320,167],{"id":2321},"nuxt",[445,2323,2324,2325,2328,2329,2331],{},"The Nuxt module accepts all global options and middleware options in ",[463,2326,2327],{},"nuxt.config.ts"," under the ",[463,2330,513],{}," key, plus:",[750,2333,2334,2346],{},[753,2335,2336],{},[756,2337,2338,2340,2342,2344],{},[759,2339,761],{},[759,2341,764],{},[759,2343,767],{},[759,2345,770],{},[772,2347,2348,2366,2384,2403],{},[756,2349,2350,2355,2359,2363],{},[777,2351,2352],{},[463,2353,2354],{},"console",[777,2356,2357],{},[463,2358,786],{},[777,2360,2361],{},[463,2362,791],{},[777,2364,2365],{},"Enable\u002Fdisable browser console output (client-side only)",[756,2367,2368,2373,2377,2381],{},[777,2369,2370],{},[463,2371,2372],{},"transport.enabled",[777,2374,2375],{},[463,2376,786],{},[777,2378,2379],{},[463,2380,797],{},[777,2382,2383],{},"Send client logs to the server via API endpoint",[756,2385,2386,2391,2395,2400],{},[777,2387,2388],{},[463,2389,2390],{},"transport.endpoint",[777,2392,2393],{},[463,2394,1135],{},[777,2396,2397],{},[463,2398,2399],{},"'\u002Fapi\u002F_evlog\u002Fingest'",[777,2401,2402],{},"Custom transport endpoint",[756,2404,2405,2410,2415,2420],{},[777,2406,2407],{},[463,2408,2409],{},"transport.credentials",[777,2411,2412],{},[463,2413,2414],{},"RequestCredentials",[777,2416,2417],{},[463,2418,2419],{},"'same-origin'",[777,2421,2422,2423,2426],{},"Fetch credentials mode (",[463,2424,2425],{},"'include'"," for cross-origin endpoints)",[445,2428,2429,2430,1012],{},"See the full ",[930,2431,2433],{"href":2432},"\u002Fintegrate\u002Fframeworks\u002Fnuxt#configuration","Nuxt configuration",[1014,2435,182],{"id":2436},"nitro",[445,2438,2439,2440,1004,2442,1004,2444,1004,2446,1004,2448,1004,2450,1004,2452,2454,2455,2457,2458,2461],{},"The Nitro module accepts ",[463,2441,781],{},[463,2443,805],{},[463,2445,823],{},[463,2447,845],{},[463,2449,915],{},[463,2451,2048],{},[463,2453,2067],{},", and ",[463,2456,2085],{}," in ",[463,2459,2460],{},"nitro.config.ts",". Drain and enrichment are done via Nitro hooks.",[445,2463,2464,2465,1012],{},"See ",[930,2466,2468],{"href":2467},"\u002Fintegrate\u002Fframeworks\u002Fnitro#drain--enrichers","Nitro drain & enrichers",[2470,2471,2472],"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":2474},[2475,2482,2485],{"id":460,"depth":519,"text":2476,"children":2477},"Global Options (initLogger)",[2478,2480,2481],{"id":1016,"depth":540,"text":2479},"minLevel vs sampling",{"id":1095,"depth":540,"text":1096},{"id":1246,"depth":540,"text":1247},{"id":1365,"depth":519,"text":1366,"children":2483},[2484],{"id":2176,"depth":540,"text":2177},{"id":2314,"depth":519,"text":2315,"children":2486},[2487,2488],{"id":2321,"depth":540,"text":167},{"id":2436,"depth":540,"text":182},"Complete reference for all evlog configuration options including global logger settings, middleware options, environment context, and framework-specific overrides.","md",[2492,2495],{"label":61,"icon":64,"to":62,"color":2493,"variant":2494},"neutral","subtle",{"label":2496,"icon":282,"to":95,"color":2493,"variant":2494},"Drain Adapters",{},{"icon":417},{"title":414,"description":2489},"FQCerTMYojUbQy5AiqQjL5PRlNxVu7tcu6g40K5Neik",[2502,2504],{"title":404,"path":405,"stem":406,"description":2503,"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":2505,"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.",1781122983508]