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