[{"data":1,"prerenderedAt":930},["ShallowReactive",2],{"navigation_docs":3,"-build-on-top-drain-pipeline":454,"-build-on-top-drain-pipeline-surround":925},[4,35,159,201,289,352,438],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,99,127],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Catalogs","\u002Flogging\u002Fcatalogs","2.logging\u002F4.catalogs","i-lucide-book-open",{"title":66,"path":67,"stem":68,"icon":69},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F5.client-logging","i-lucide-monitor",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":34},"AI SDK","i-simple-icons-vercel","\u002Flogging\u002Fai-sdk","2.logging\u002F6.ai-sdk",[76,79,84,89,94],{"title":41,"path":77,"stem":78,"icon":44},"\u002Flogging\u002Fai-sdk\u002Foverview","2.logging\u002F6.ai-sdk\u002F01.overview",{"title":80,"path":81,"stem":82,"icon":83},"Usage","\u002Flogging\u002Fai-sdk\u002Fusage","2.logging\u002F6.ai-sdk\u002F02.usage","i-lucide-code",{"title":85,"path":86,"stem":87,"icon":88},"Options","\u002Flogging\u002Fai-sdk\u002Foptions","2.logging\u002F6.ai-sdk\u002F03.options","i-lucide-sliders",{"title":90,"path":91,"stem":92,"icon":93},"Metadata","\u002Flogging\u002Fai-sdk\u002Fmetadata","2.logging\u002F6.ai-sdk\u002F04.metadata","i-lucide-database",{"title":95,"path":96,"stem":97,"icon":98},"Telemetry","\u002Flogging\u002Fai-sdk\u002Ftelemetry","2.logging\u002F6.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Flogging\u002Fbetter-auth","2.logging\u002F7.better-auth",[105,108,113,118,122],{"title":41,"path":106,"stem":107,"icon":44},"\u002Flogging\u002Fbetter-auth\u002Foverview","2.logging\u002F7.better-auth\u002F01.overview",{"title":109,"path":110,"stem":111,"icon":112},"Identify User","\u002Flogging\u002Fbetter-auth\u002Fidentify-user","2.logging\u002F7.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":114,"path":115,"stem":116,"icon":117},"Middleware","\u002Flogging\u002Fbetter-auth\u002Fmiddleware","2.logging\u002F7.better-auth\u002F03.middleware","i-lucide-shield",{"title":119,"path":120,"stem":121,"icon":69},"Client Sync","\u002Flogging\u002Fbetter-auth\u002Fclient-sync","2.logging\u002F7.better-auth\u002F04.client-sync",{"title":123,"path":124,"stem":125,"icon":126},"Performance","\u002Flogging\u002Fbetter-auth\u002Fperformance","2.logging\u002F7.better-auth\u002F05.performance","i-lucide-gauge",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":34},"Audit Logs","i-lucide-shield-check","\u002Flogging\u002Faudit","2.logging\u002F8.audit",[133,136,141,146,151,155],{"title":41,"path":134,"stem":135,"icon":44},"\u002Flogging\u002Faudit\u002Foverview","2.logging\u002F8.audit\u002F01.overview",{"title":137,"path":138,"stem":139,"icon":140},"Schema","\u002Flogging\u002Faudit\u002Fschema","2.logging\u002F8.audit\u002F02.schema","i-lucide-file-text",{"title":142,"path":143,"stem":144,"icon":145},"Recording","\u002Flogging\u002Faudit\u002Frecording","2.logging\u002F8.audit\u002F03.recording","i-lucide-pen-line",{"title":147,"path":148,"stem":149,"icon":150},"Drains","\u002Flogging\u002Faudit\u002Fpipeline","2.logging\u002F8.audit\u002F04.pipeline","i-lucide-link",{"title":152,"path":153,"stem":154,"icon":129},"Compliance","\u002Flogging\u002Faudit\u002Fcompliance","2.logging\u002F8.audit\u002F05.compliance",{"title":156,"path":157,"stem":158,"icon":64},"Recipes","\u002Flogging\u002Faudit\u002Frecipes","2.logging\u002F8.audit\u002F06.recipes",{"title":160,"path":161,"stem":162,"children":163,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[164,169,174,179,184,188,191,196],{"title":165,"path":166,"stem":167,"icon":168},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":170,"path":171,"stem":172,"icon":173},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":175,"path":176,"stem":177,"icon":178},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":180,"path":181,"stem":182,"icon":183},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":185,"path":186,"stem":187,"icon":129},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":123,"path":189,"stem":190,"icon":126},"\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance",{"title":192,"path":193,"stem":194,"icon":195},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":197,"path":198,"stem":199,"icon":200},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":202,"path":203,"stem":204,"children":205,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[206,210,215,220,225,230,235,240,245,250,255,260,265,270,274,279,284],{"title":41,"path":207,"stem":208,"icon":209},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":211,"path":212,"stem":213,"icon":214},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":216,"path":217,"stem":218,"icon":219},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":221,"path":222,"stem":223,"icon":224},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":226,"path":227,"stem":228,"icon":229},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":231,"path":232,"stem":233,"icon":234},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":236,"path":237,"stem":238,"icon":239},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":241,"path":242,"stem":243,"icon":244},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":246,"path":247,"stem":248,"icon":249},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":251,"path":252,"stem":253,"icon":254},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":256,"path":257,"stem":258,"icon":259},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":261,"path":262,"stem":263,"icon":264},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":266,"path":267,"stem":268,"icon":269},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":271,"path":272,"stem":273,"icon":183},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":275,"path":276,"stem":277,"icon":278},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":280,"path":281,"stem":282,"icon":283},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":285,"path":286,"stem":287,"icon":288},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":290,"path":291,"stem":292,"children":293,"page":34},"Build on top","\u002Fbuild-on-top","5.build-on-top",[294,297,302,307,312,316,321,326,330,334,338,342,347],{"title":41,"path":295,"stem":296,"icon":54},"\u002Fbuild-on-top\u002Foverview","5.build-on-top\u002F0.overview",{"title":298,"path":299,"stem":300,"icon":301},"In-process stream","\u002Fbuild-on-top\u002Fin-process-stream","5.build-on-top\u002F1.in-process-stream","i-lucide-radio-tower",{"title":303,"path":304,"stem":305,"icon":306},"Fanout","\u002Fbuild-on-top\u002Ffanout-and-multi-drain","5.build-on-top\u002F10.fanout-and-multi-drain","i-lucide-share-2",{"title":308,"path":309,"stem":310,"icon":311},"Identity headers","\u002Fbuild-on-top\u002Fidentity-headers","5.build-on-top\u002F11.identity-headers","i-lucide-fingerprint",{"title":313,"path":314,"stem":315,"icon":288},"Custom framework","\u002Fbuild-on-top\u002Fcustom-framework","5.build-on-top\u002F12.custom-framework",{"title":317,"path":318,"stem":319,"icon":320},"Stream server","\u002Fbuild-on-top\u002Fstream-server","5.build-on-top\u002F2.stream-server","i-lucide-radio",{"title":322,"path":323,"stem":324,"icon":325},"FS reader","\u002Fbuild-on-top\u002Ffs-reader","5.build-on-top\u002F3.fs-reader","i-lucide-folder-search",{"title":156,"path":327,"stem":328,"icon":329},"\u002Fbuild-on-top\u002Fconsumer-recipes","5.build-on-top\u002F4.consumer-recipes","i-lucide-chef-hat",{"title":331,"path":332,"stem":333,"icon":288},"Plugins","\u002Fbuild-on-top\u002Fplugins","5.build-on-top\u002F5.plugins",{"title":335,"path":336,"stem":337,"icon":28},"Custom enrichers","\u002Fbuild-on-top\u002Fcustom-enrichers","5.build-on-top\u002F6.custom-enrichers",{"title":339,"path":340,"stem":341,"icon":178},"Tail sampling","\u002Fbuild-on-top\u002Ftail-sampling","5.build-on-top\u002F7.tail-sampling",{"title":343,"path":344,"stem":345,"icon":346},"Custom drains","\u002Fbuild-on-top\u002Fcustom-drains","5.build-on-top\u002F8.custom-drains","i-lucide-code-2",{"title":348,"path":349,"stem":350,"icon":351},"Drain pipeline","\u002Fbuild-on-top\u002Fdrain-pipeline","5.build-on-top\u002F9.drain-pipeline","i-lucide-workflow",{"title":353,"path":354,"stem":355,"children":356,"page":34},"Adapters","\u002Fadapters","6.adapters",[357,360,400,415],{"title":41,"path":358,"stem":359,"icon":44},"\u002Fadapters\u002Foverview","6.adapters\u002F01.overview",{"title":361,"path":362,"stem":363,"children":364,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[365,370,375,380,385,390,395],{"title":366,"path":367,"stem":368,"icon":369},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":371,"path":372,"stem":373,"icon":374},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":376,"path":377,"stem":378,"icon":379},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":381,"path":382,"stem":383,"icon":384},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":386,"path":387,"stem":388,"icon":389},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":391,"path":392,"stem":393,"icon":394},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":396,"path":397,"stem":398,"icon":399},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":401,"path":402,"stem":403,"children":404,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[405,410],{"title":406,"path":407,"stem":408,"icon":409},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":411,"path":412,"stem":413,"icon":414},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":416,"path":417,"stem":418,"children":419,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[420,424,429,433],{"title":421,"path":422,"stem":423,"icon":351},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline",{"title":425,"path":426,"stem":427,"icon":428},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":430,"path":431,"stem":432,"icon":83},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom",{"title":434,"path":435,"stem":436,"icon":437},"Toolkit","\u002Fadapters\u002Fbuilding-blocks\u002Ftoolkit","6.adapters\u002F04.building-blocks\u002F04.toolkit","i-lucide-blocks",{"title":439,"path":440,"stem":441,"children":442,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[443,446,450],{"title":41,"path":444,"stem":445,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":447,"path":448,"stem":449,"icon":288},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":451,"path":452,"stem":453,"icon":83},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":455,"title":348,"body":456,"description":918,"extension":919,"links":920,"meta":921,"navigation":922,"path":349,"seo":923,"stem":350,"__hash__":924},"docs\u002F5.build-on-top\u002F9.drain-pipeline.md",{"type":457,"value":458,"toc":911},"minimark",[459,473,476,546,551,557,581,588,592,794,798,858,865,869,891,895,907],[460,461,462,463,467,468,472],"p",{},"Every drain in production should be wrapped in the ",[464,465,466],"strong",{},"drain pipeline"," — ",[469,470,471],"code",{},"createDrainPipeline()",". It batches events, retries on transient failures, and drops the oldest events when the buffer overflows. Without it, you make one HTTP request per emitted event, which doesn't scale beyond local dev.",[474,475],"drain-pipeline-batching",{},[477,478,481,484,537],"prompt",{":actions":479,"description":480,"icon":351},"[\"copy\",\"cursor\",\"windsurf\"]","Wrap an evlog drain in batch + retry pipeline",[460,482,483],{},"Wrap my evlog drain in the drain pipeline so it batches, retries, and survives transient failures.",[485,486,487,498,509,516,523,534],"ul",{},[488,489,490,491,494,495],"li",{},"Import ",[469,492,493],{},"createDrainPipeline"," from ",[469,496,497],{},"evlog\u002Fpipeline",[488,499,500,501,504,505,508],{},"Create a pipeline with batch size and interval (",[469,502,503],{},"{ size: 50, intervalMs: 2000 }"," are sane defaults) and retry options (",[469,506,507],{},"{ maxAttempts: 3 }"," with exponential backoff)",[488,510,511,512,515],{},"Wrap each underlying drain by calling ",[469,513,514],{},"pipeline(myDrain)"," — the result implements the same Drain contract",[488,517,518,519,522],{},"For multiple destinations, pass them in one pipeline as a fanout ",[469,520,521],{},"pipeline([drainA, drainB])","; cheaper than two pipelines",[488,524,525,526,529,530,533],{},"On shutdown, call ",[469,527,528],{},"pipeline.flush()"," and ",[469,531,532],{},"pipeline.dispose()"," to drain in-flight events (frameworks with proper lifecycle do this automatically)",[488,535,536],{},"Always use the pipeline in production — direct drains make one HTTP call per event and fall over fast",[460,538,539,540],{},"Docs: ",[541,542,543],"a",{"href":543,"rel":544},"https:\u002F\u002Fwww.evlog.dev\u002Fbuild-on-top\u002Fdrain-pipeline",[545],"nofollow",[547,548,550],"h2",{"id":549},"canonical-guide","Canonical guide",[460,552,553,554,556],{},"Full reference at ",[541,555,348],{"href":422},":",[485,558,559,564,567,570],{},[488,560,561,563],{},[469,562,471],{}," API + options (batch size \u002F interval, retry attempts \u002F backoff, buffer overflow)",[488,565,566],{},"Wrapping a single drain",[488,568,569],{},"Fanout to multiple drains in one pipeline",[488,571,572,573,576,577,580],{},"Lifecycle (",[469,574,575],{},"flush()",", ",[469,578,579],{},"dispose()",") on shutdown",[460,582,583,584,587],{},"This page exists in the ",[464,585,586],{},"build-on-top"," section as a pointer — same content, classified by axis.",[547,589,591],{"id":590},"quick-example","Quick example",[593,594,599],"pre",{"className":595,"code":596,"language":597,"meta":598,"style":598},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createDrainPipeline } from 'evlog\u002Fpipeline'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 2000 },\n  retry: { maxAttempts: 3 },\n})\n\nconst drain = pipeline(createAxiomDrain())\n\n\u002F\u002F Use `drain` wherever you'd register a drain (Nitro hook, initLogger, etc.)\n","ts","",[469,600,601,633,654,661,693,727,747,756,761,782,787],{"__ignoreMap":598},[602,603,606,610,614,618,621,624,627,630],"span",{"class":604,"line":605},"line",1,[602,607,609],{"class":608},"s7zQu","import",[602,611,613],{"class":612},"sMK4o"," {",[602,615,617],{"class":616},"sTEyZ"," createDrainPipeline",[602,619,620],{"class":612}," }",[602,622,623],{"class":608}," from",[602,625,626],{"class":612}," '",[602,628,497],{"class":629},"sfazB",[602,631,632],{"class":612},"'\n",[602,634,636,638,640,643,645,647,649,652],{"class":604,"line":635},2,[602,637,609],{"class":608},[602,639,613],{"class":612},[602,641,642],{"class":616}," createAxiomDrain",[602,644,620],{"class":612},[602,646,623],{"class":608},[602,648,626],{"class":612},[602,650,651],{"class":629},"evlog\u002Faxiom",[602,653,632],{"class":612},[602,655,657],{"class":604,"line":656},3,[602,658,660],{"emptyLinePlaceholder":659},true,"\n",[602,662,664,668,671,674,677,680,684,687,690],{"class":604,"line":663},4,[602,665,667],{"class":666},"spNyl","const",[602,669,670],{"class":616}," pipeline ",[602,672,673],{"class":612},"=",[602,675,617],{"class":676},"s2Zo4",[602,678,679],{"class":612},"\u003C",[602,681,683],{"class":682},"sBMFI","DrainContext",[602,685,686],{"class":612},">",[602,688,689],{"class":616},"(",[602,691,692],{"class":612},"{\n",[602,694,696,700,702,704,707,709,713,716,719,721,724],{"class":604,"line":695},5,[602,697,699],{"class":698},"swJcz","  batch",[602,701,556],{"class":612},[602,703,613],{"class":612},[602,705,706],{"class":698}," size",[602,708,556],{"class":612},[602,710,712],{"class":711},"sbssI"," 50",[602,714,715],{"class":612},",",[602,717,718],{"class":698}," intervalMs",[602,720,556],{"class":612},[602,722,723],{"class":711}," 2000",[602,725,726],{"class":612}," },\n",[602,728,730,733,735,737,740,742,745],{"class":604,"line":729},6,[602,731,732],{"class":698},"  retry",[602,734,556],{"class":612},[602,736,613],{"class":612},[602,738,739],{"class":698}," maxAttempts",[602,741,556],{"class":612},[602,743,744],{"class":711}," 3",[602,746,726],{"class":612},[602,748,750,753],{"class":604,"line":749},7,[602,751,752],{"class":612},"}",[602,754,755],{"class":616},")\n",[602,757,759],{"class":604,"line":758},8,[602,760,660],{"emptyLinePlaceholder":659},[602,762,764,766,769,771,774,776,779],{"class":604,"line":763},9,[602,765,667],{"class":666},[602,767,768],{"class":616}," drain ",[602,770,673],{"class":612},[602,772,773],{"class":676}," pipeline",[602,775,689],{"class":616},[602,777,778],{"class":676},"createAxiomDrain",[602,780,781],{"class":616},"())\n",[602,783,785],{"class":604,"line":784},10,[602,786,660],{"emptyLinePlaceholder":659},[602,788,790],{"class":604,"line":789},11,[602,791,793],{"class":792},"sHwdD","\u002F\u002F Use `drain` wherever you'd register a drain (Nitro hook, initLogger, etc.)\n",[547,795,797],{"id":796},"fanout-pattern","Fanout pattern",[593,799,801],{"className":595,"code":800,"language":597,"meta":598,"style":598},"const drain = pipeline(\n  createAxiomDrain(),\n  createDatadogDrain(),\n  createSentryDrain(),\n  createFsDrain(),\n)\n",[469,802,803,816,827,836,845,854],{"__ignoreMap":598},[602,804,805,807,809,811,813],{"class":604,"line":605},[602,806,667],{"class":666},[602,808,768],{"class":616},[602,810,673],{"class":612},[602,812,773],{"class":676},[602,814,815],{"class":616},"(\n",[602,817,818,821,824],{"class":604,"line":635},[602,819,820],{"class":676},"  createAxiomDrain",[602,822,823],{"class":616},"()",[602,825,826],{"class":612},",\n",[602,828,829,832,834],{"class":604,"line":656},[602,830,831],{"class":676},"  createDatadogDrain",[602,833,823],{"class":616},[602,835,826],{"class":612},[602,837,838,841,843],{"class":604,"line":663},[602,839,840],{"class":676},"  createSentryDrain",[602,842,823],{"class":616},[602,844,826],{"class":612},[602,846,847,850,852],{"class":604,"line":695},[602,848,849],{"class":676},"  createFsDrain",[602,851,823],{"class":616},[602,853,826],{"class":612},[602,855,856],{"class":604,"line":729},[602,857,755],{"class":616},[460,859,860,861,864],{},"All four destinations receive every event in the same batch. See ",[541,862,863],{"href":304},"Fanout & multi-drain"," for the full recipe.",[547,866,868],{"id":867},"common-pitfalls","Common pitfalls",[485,870,871,881],{},[488,872,873,880],{},[464,874,875,876,879],{},"Don't forget ",[469,877,878],{},"drain.flush()"," on shutdown"," — buffered events are lost otherwise",[488,882,883,890],{},[464,884,885,886,889],{},"Tune ",[469,887,888],{},"batch.size"," to match your provider's recommended payload"," — too small wastes overhead, too big risks rejection",[547,892,894],{"id":893},"going-further","Going further",[485,896,897,902],{},[488,898,899,901],{},[541,900,343],{"href":344}," — what you put inside the pipeline",[488,903,904,906],{},[541,905,863],{"href":304}," — concrete fanout recipe",[908,909,910],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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);}",{"title":598,"searchDepth":635,"depth":635,"links":912},[913,914,915,916,917],{"id":549,"depth":635,"text":550},{"id":590,"depth":635,"text":591},{"id":796,"depth":635,"text":797},{"id":867,"depth":635,"text":868},{"id":893,"depth":635,"text":894},"createDrainPipeline wraps any drain in batch + retry + buffer overflow protection. Required for non-trivial production volume; supports fanout to multiple drains in parallel.","md",null,{},{"title":348,"icon":351},{"title":348,"description":918},"GRklxyDxmpvgaU51lq_e7w6i8OMHSRPZPv5zvtE76r4",[926,928],{"title":343,"path":344,"stem":345,"description":927,"icon":346,"children":-1},"defineDrain and defineHttpDrain — write your own drain to ship wide events to any backend without a built-in adapter.",{"title":41,"path":358,"stem":359,"description":929,"icon":44,"children":-1},"Send your logs to external services with evlog adapters. Built-in support for popular observability platforms and custom destinations.",1778340940650]