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