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