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