[{"data":1,"prerenderedAt":1861},["ShallowReactive",2],{"navigation_docs":3,"-adapters-overview":277,"-adapters-overview-surround":1856},[4,30,65,105,188,247,263],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"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",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Logging","\u002Flogging","2.logging",[35,40,45,50,55,60],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":61,"path":62,"stem":63,"icon":64},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":66,"path":67,"stem":68,"children":69,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[70,75,80,85,90,95,100],{"title":71,"path":72,"stem":73,"icon":74},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":76,"path":77,"stem":78,"icon":79},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":81,"path":82,"stem":83,"icon":84},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":86,"path":87,"stem":88,"icon":89},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":91,"path":92,"stem":93,"icon":94},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices","i-lucide-shield-check",{"title":96,"path":97,"stem":98,"icon":99},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":101,"path":102,"stem":103,"icon":104},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[110,114,119,124,129,134,139,144,149,154,159,164,169,174,178,183],{"title":36,"path":111,"stem":112,"icon":113},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":115,"path":116,"stem":117,"icon":118},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":120,"path":121,"stem":122,"icon":123},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":125,"path":126,"stem":127,"icon":128},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":130,"path":131,"stem":132,"icon":133},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":135,"path":136,"stem":137,"icon":138},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":140,"path":141,"stem":142,"icon":143},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":145,"path":146,"stem":147,"icon":148},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":150,"path":151,"stem":152,"icon":153},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":155,"path":156,"stem":157,"icon":158},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":160,"path":161,"stem":162,"icon":163},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":165,"path":166,"stem":167,"icon":168},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":170,"path":171,"stem":172,"icon":173},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":175,"path":176,"stem":177,"icon":89},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":179,"path":180,"stem":181,"icon":182},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":184,"path":185,"stem":186,"icon":187},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":189,"path":190,"stem":191,"children":192,"page":29},"Adapters","\u002Fadapters","5.adapters",[193,197,202,207,212,217,222,227,232,237,242],{"title":36,"path":194,"stem":195,"icon":196},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":198,"path":199,"stem":200,"icon":201},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F10.pipeline","i-lucide-workflow",{"title":203,"path":204,"stem":205,"icon":206},"Browser","\u002Fadapters\u002Fbrowser","5.adapters\u002F11.browser","i-lucide-globe",{"title":208,"path":209,"stem":210,"icon":211},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":213,"path":214,"stem":215,"icon":216},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":218,"path":219,"stem":220,"icon":221},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":223,"path":224,"stem":225,"icon":226},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":228,"path":229,"stem":230,"icon":231},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":233,"path":234,"stem":235,"icon":236},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":238,"path":239,"stem":240,"icon":241},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F8.hyperdx","i-custom-hyperdx",{"title":243,"path":244,"stem":245,"icon":246},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F9.custom","i-lucide-code",{"title":248,"path":249,"stem":250,"children":251,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[252,255,259],{"title":36,"path":253,"stem":254,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":256,"path":257,"stem":258,"icon":187},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":260,"path":261,"stem":262,"icon":246},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":264,"path":265,"stem":266,"children":267,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[268,272],{"title":36,"path":269,"stem":270,"icon":271},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":273,"path":274,"stem":275,"icon":276},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":278,"title":279,"body":280,"description":1841,"extension":1842,"links":1843,"meta":1852,"navigation":1853,"path":194,"seo":1854,"stem":195,"__hash__":1855},"docs\u002F5.adapters\u002F1.overview.md","Adapters Overview",{"type":281,"value":282,"toc":1833},"minimark",[283,287,292,305,308,776,789,793,827,831,841,1192,1205,1209,1212,1355,1361,1572,1576,1582,1659,1676,1680,1683,1690,1822,1829],[284,285,286],"p",{},"Adapters let you send logs to external observability platforms. evlog provides built-in adapters for popular services, and you can create custom adapters for any destination.",[288,289,291],"h2",{"id":290},"how-adapters-work","How Adapters Work",[284,293,294,295,299,300,304],{},"Adapters receive a ",[296,297,298],"code",{},"DrainContext"," after each request completes and send the data to an external service. The drain runs in ",[301,302,303],"strong",{},"fire-and-forget"," mode, meaning it never blocks the HTTP response.",[284,306,307],{},"How you wire an adapter depends on your framework:",[309,310,311,445,508,562,621,675,728],"code-group",{},[312,313,319],"pre",{"className":314,"code":315,"filename":316,"language":317,"meta":318,"style":318},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createAxiomDrain())\n})\n","Nuxt \u002F Nitro","typescript","",[296,320,321,330,361,368,400,436],{"__ignoreMap":318},[322,323,326],"span",{"class":324,"line":325},"line",1,[322,327,329],{"class":328},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[322,331,333,337,341,345,348,351,354,358],{"class":324,"line":332},2,[322,334,336],{"class":335},"s7zQu","import",[322,338,340],{"class":339},"sMK4o"," {",[322,342,344],{"class":343},"sTEyZ"," createAxiomDrain",[322,346,347],{"class":339}," }",[322,349,350],{"class":335}," from",[322,352,353],{"class":339}," '",[322,355,357],{"class":356},"sfazB","evlog\u002Faxiom",[322,359,360],{"class":339},"'\n",[322,362,364],{"class":324,"line":363},3,[322,365,367],{"emptyLinePlaceholder":366},true,"\n",[322,369,371,374,377,381,384,386,390,393,397],{"class":324,"line":370},4,[322,372,373],{"class":335},"export",[322,375,376],{"class":335}," default",[322,378,380],{"class":379},"s2Zo4"," defineNitroPlugin",[322,382,383],{"class":343},"(",[322,385,383],{"class":339},[322,387,389],{"class":388},"sHdIc","nitroApp",[322,391,392],{"class":339},")",[322,394,396],{"class":395},"spNyl"," =>",[322,398,399],{"class":339}," {\n",[322,401,403,406,409,412,414,417,420,423,426,428,431,433],{"class":324,"line":402},5,[322,404,405],{"class":343},"  nitroApp",[322,407,408],{"class":339},".",[322,410,411],{"class":343},"hooks",[322,413,408],{"class":339},[322,415,416],{"class":379},"hook",[322,418,383],{"class":419},"swJcz",[322,421,422],{"class":339},"'",[322,424,425],{"class":356},"evlog:drain",[322,427,422],{"class":339},[322,429,430],{"class":339},",",[322,432,344],{"class":379},[322,434,435],{"class":419},"())\n",[322,437,439,442],{"class":324,"line":438},6,[322,440,441],{"class":339},"}",[322,443,444],{"class":343},")\n",[312,446,448],{"className":314,"code":447,"filename":150,"language":317,"meta":318,"style":318},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\napp.use(evlog({ drain: createAxiomDrain() }))\n",[296,449,450,468,472],{"__ignoreMap":318},[322,451,452,454,456,458,460,462,464,466],{"class":324,"line":325},[322,453,336],{"class":335},[322,455,340],{"class":339},[322,457,344],{"class":343},[322,459,347],{"class":339},[322,461,350],{"class":335},[322,463,353],{"class":339},[322,465,357],{"class":356},[322,467,360],{"class":339},[322,469,470],{"class":324,"line":332},[322,471,367],{"emptyLinePlaceholder":366},[322,473,474,477,479,482,484,487,489,492,495,498,500,503,505],{"class":324,"line":363},[322,475,476],{"class":343},"app",[322,478,408],{"class":339},[322,480,481],{"class":379},"use",[322,483,383],{"class":343},[322,485,486],{"class":379},"evlog",[322,488,383],{"class":343},[322,490,491],{"class":339},"{",[322,493,494],{"class":419}," drain",[322,496,497],{"class":339},":",[322,499,344],{"class":379},[322,501,502],{"class":343},"() ",[322,504,441],{"class":339},[322,506,507],{"class":343},"))\n",[312,509,510],{"className":314,"code":447,"filename":145,"language":317,"meta":318,"style":318},[296,511,512,530,534],{"__ignoreMap":318},[322,513,514,516,518,520,522,524,526,528],{"class":324,"line":325},[322,515,336],{"class":335},[322,517,340],{"class":339},[322,519,344],{"class":343},[322,521,347],{"class":339},[322,523,350],{"class":335},[322,525,353],{"class":339},[322,527,357],{"class":356},[322,529,360],{"class":339},[322,531,532],{"class":324,"line":332},[322,533,367],{"emptyLinePlaceholder":366},[322,535,536,538,540,542,544,546,548,550,552,554,556,558,560],{"class":324,"line":363},[322,537,476],{"class":343},[322,539,408],{"class":339},[322,541,481],{"class":379},[322,543,383],{"class":343},[322,545,486],{"class":379},[322,547,383],{"class":343},[322,549,491],{"class":339},[322,551,494],{"class":419},[322,553,497],{"class":339},[322,555,344],{"class":379},[322,557,502],{"class":343},[322,559,441],{"class":339},[322,561,507],{"class":343},[312,563,565],{"className":314,"code":564,"filename":155,"language":317,"meta":318,"style":318},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nawait app.register(evlog, { drain: createAxiomDrain() })\n",[296,566,567,585,589],{"__ignoreMap":318},[322,568,569,571,573,575,577,579,581,583],{"class":324,"line":325},[322,570,336],{"class":335},[322,572,340],{"class":339},[322,574,344],{"class":343},[322,576,347],{"class":339},[322,578,350],{"class":335},[322,580,353],{"class":339},[322,582,357],{"class":356},[322,584,360],{"class":339},[322,586,587],{"class":324,"line":332},[322,588,367],{"emptyLinePlaceholder":366},[322,590,591,594,597,599,602,605,607,609,611,613,615,617,619],{"class":324,"line":363},[322,592,593],{"class":335},"await",[322,595,596],{"class":343}," app",[322,598,408],{"class":339},[322,600,601],{"class":379},"register",[322,603,604],{"class":343},"(evlog",[322,606,430],{"class":339},[322,608,340],{"class":339},[322,610,494],{"class":419},[322,612,497],{"class":339},[322,614,344],{"class":379},[322,616,502],{"class":343},[322,618,441],{"class":339},[322,620,444],{"class":343},[312,622,623],{"className":314,"code":447,"filename":160,"language":317,"meta":318,"style":318},[296,624,625,643,647],{"__ignoreMap":318},[322,626,627,629,631,633,635,637,639,641],{"class":324,"line":325},[322,628,336],{"class":335},[322,630,340],{"class":339},[322,632,344],{"class":343},[322,634,347],{"class":339},[322,636,350],{"class":335},[322,638,353],{"class":339},[322,640,357],{"class":356},[322,642,360],{"class":339},[322,644,645],{"class":324,"line":332},[322,646,367],{"emptyLinePlaceholder":366},[322,648,649,651,653,655,657,659,661,663,665,667,669,671,673],{"class":324,"line":363},[322,650,476],{"class":343},[322,652,408],{"class":339},[322,654,481],{"class":379},[322,656,383],{"class":343},[322,658,486],{"class":379},[322,660,383],{"class":343},[322,662,491],{"class":339},[322,664,494],{"class":419},[322,666,497],{"class":339},[322,668,344],{"class":379},[322,670,502],{"class":343},[322,672,441],{"class":339},[322,674,507],{"class":343},[312,676,678],{"className":314,"code":677,"filename":140,"language":317,"meta":318,"style":318},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nEvlogModule.forRoot({ drain: createAxiomDrain() })\n",[296,679,680,698,702],{"__ignoreMap":318},[322,681,682,684,686,688,690,692,694,696],{"class":324,"line":325},[322,683,336],{"class":335},[322,685,340],{"class":339},[322,687,344],{"class":343},[322,689,347],{"class":339},[322,691,350],{"class":335},[322,693,353],{"class":339},[322,695,357],{"class":356},[322,697,360],{"class":339},[322,699,700],{"class":324,"line":332},[322,701,367],{"emptyLinePlaceholder":366},[322,703,704,707,709,712,714,716,718,720,722,724,726],{"class":324,"line":363},[322,705,706],{"class":343},"EvlogModule",[322,708,408],{"class":339},[322,710,711],{"class":379},"forRoot",[322,713,383],{"class":343},[322,715,491],{"class":339},[322,717,494],{"class":419},[322,719,497],{"class":339},[322,721,344],{"class":379},[322,723,502],{"class":343},[322,725,441],{"class":339},[322,727,444],{"class":343},[312,729,731],{"className":314,"code":730,"filename":175,"language":317,"meta":318,"style":318},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({ drain: createAxiomDrain() })\n",[296,732,733,751,755],{"__ignoreMap":318},[322,734,735,737,739,741,743,745,747,749],{"class":324,"line":325},[322,736,336],{"class":335},[322,738,340],{"class":339},[322,740,344],{"class":343},[322,742,347],{"class":339},[322,744,350],{"class":335},[322,746,353],{"class":339},[322,748,357],{"class":356},[322,750,360],{"class":339},[322,752,753],{"class":324,"line":332},[322,754,367],{"emptyLinePlaceholder":366},[322,756,757,760,762,764,766,768,770,772,774],{"class":324,"line":363},[322,758,759],{"class":379},"initLogger",[322,761,383],{"class":343},[322,763,491],{"class":339},[322,765,494],{"class":419},[322,767,497],{"class":339},[322,769,344],{"class":379},[322,771,502],{"class":343},[322,773,441],{"class":339},[322,775,444],{"class":343},[777,778,781,784,785,788],"callout",{"color":779,"icon":780},"info","i-lucide-cloud",[301,782,783],{},"Serverless Support:"," On Cloudflare Workers and Vercel Edge, evlog automatically uses ",[296,786,787],{},"waitUntil()"," to ensure drains complete before the runtime terminates. No additional configuration needed.",[288,790,792],{"id":791},"available-adapters","Available Adapters",[794,795,796,800,803,806,809,812,815,818,821,824],"card-group",{},[797,798,799],"card",{"icon":211,"title":208,"to":209},"Send logs to Axiom for powerful querying and dashboards.",[797,801,802],{"icon":216,"title":213,"to":214},"OpenTelemetry Protocol for Grafana, Datadog, Honeycomb, and more.",[797,804,805],{"icon":241,"title":238,"to":239},"Send logs to HyperDX via OTLP\u002FHTTP using their documented ingest endpoint and API key.",[797,807,808],{"icon":221,"title":218,"to":219},"Send logs to PostHog Logs for structured logging and observability.",[797,810,811],{"icon":226,"title":223,"to":224},"Send structured logs to Sentry Logs for high-cardinality querying.",[797,813,814],{"icon":231,"title":228,"to":229},"Send logs to Better Stack for log management and alerting.",[797,816,817],{"icon":236,"title":233,"to":234},"Write logs to local NDJSON files for debugging and AI agent integration.",[797,819,820],{"icon":246,"title":260,"to":244},"Build your own adapter for any destination.",[797,822,823],{"icon":206,"title":203,"to":204},"Send browser logs to your server without framework coupling.",[797,825,826],{"icon":201,"title":198,"to":199},"Batch events, retry on failure, and handle buffer overflow.",[288,828,830],{"id":829},"standalone-usage","Standalone Usage",[284,832,833,834,837,838,840],{},"In plain TypeScript or Bun scripts (no HTTP framework), use the ",[296,835,836],{},"drain"," option in ",[296,839,759],{},". Every emitted event is drained automatically.",[312,842,845],{"className":314,"code":843,"filename":844,"language":317,"meta":318,"style":318},"import type { DrainContext } from 'evlog'\nimport { initLogger, log, createRequestLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>()\nconst drain = pipeline(createAxiomDrain())\n\ninitLogger({\n  env: { service: 'my-script' },\n  drain,\n})\n\nlog.info({ action: 'job_started' }) \u002F\u002F drained automatically\n\nconst reqLog = createRequestLogger({ method: 'POST', path: '\u002Fprocess' })\nreqLog.set({ processed: 42 })\nreqLog.emit() \u002F\u002F drained automatically\n\nawait drain.flush()\n","index.ts",[296,846,847,869,898,916,936,940,965,985,990,1000,1025,1034,1041,1046,1080,1085,1131,1159,1173,1178],{"__ignoreMap":318},[322,848,849,851,854,856,859,861,863,865,867],{"class":324,"line":325},[322,850,336],{"class":335},[322,852,853],{"class":335}," type",[322,855,340],{"class":339},[322,857,858],{"class":343}," DrainContext",[322,860,347],{"class":339},[322,862,350],{"class":335},[322,864,353],{"class":339},[322,866,486],{"class":356},[322,868,360],{"class":339},[322,870,871,873,875,878,880,883,885,888,890,892,894,896],{"class":324,"line":332},[322,872,336],{"class":335},[322,874,340],{"class":339},[322,876,877],{"class":343}," initLogger",[322,879,430],{"class":339},[322,881,882],{"class":343}," log",[322,884,430],{"class":339},[322,886,887],{"class":343}," createRequestLogger",[322,889,347],{"class":339},[322,891,350],{"class":335},[322,893,353],{"class":339},[322,895,486],{"class":356},[322,897,360],{"class":339},[322,899,900,902,904,906,908,910,912,914],{"class":324,"line":363},[322,901,336],{"class":335},[322,903,340],{"class":339},[322,905,344],{"class":343},[322,907,347],{"class":339},[322,909,350],{"class":335},[322,911,353],{"class":339},[322,913,357],{"class":356},[322,915,360],{"class":339},[322,917,918,920,922,925,927,929,931,934],{"class":324,"line":370},[322,919,336],{"class":335},[322,921,340],{"class":339},[322,923,924],{"class":343}," createDrainPipeline",[322,926,347],{"class":339},[322,928,350],{"class":335},[322,930,353],{"class":339},[322,932,933],{"class":356},"evlog\u002Fpipeline",[322,935,360],{"class":339},[322,937,938],{"class":324,"line":402},[322,939,367],{"emptyLinePlaceholder":366},[322,941,942,945,948,951,953,956,959,962],{"class":324,"line":438},[322,943,944],{"class":395},"const",[322,946,947],{"class":343}," pipeline ",[322,949,950],{"class":339},"=",[322,952,924],{"class":379},[322,954,955],{"class":339},"\u003C",[322,957,298],{"class":958},"sBMFI",[322,960,961],{"class":339},">",[322,963,964],{"class":343},"()\n",[322,966,968,970,973,975,978,980,983],{"class":324,"line":967},7,[322,969,944],{"class":395},[322,971,972],{"class":343}," drain ",[322,974,950],{"class":339},[322,976,977],{"class":379}," pipeline",[322,979,383],{"class":343},[322,981,982],{"class":379},"createAxiomDrain",[322,984,435],{"class":343},[322,986,988],{"class":324,"line":987},8,[322,989,367],{"emptyLinePlaceholder":366},[322,991,993,995,997],{"class":324,"line":992},9,[322,994,759],{"class":379},[322,996,383],{"class":343},[322,998,999],{"class":339},"{\n",[322,1001,1003,1006,1008,1010,1013,1015,1017,1020,1022],{"class":324,"line":1002},10,[322,1004,1005],{"class":419},"  env",[322,1007,497],{"class":339},[322,1009,340],{"class":339},[322,1011,1012],{"class":419}," service",[322,1014,497],{"class":339},[322,1016,353],{"class":339},[322,1018,1019],{"class":356},"my-script",[322,1021,422],{"class":339},[322,1023,1024],{"class":339}," },\n",[322,1026,1028,1031],{"class":324,"line":1027},11,[322,1029,1030],{"class":343},"  drain",[322,1032,1033],{"class":339},",\n",[322,1035,1037,1039],{"class":324,"line":1036},12,[322,1038,441],{"class":339},[322,1040,444],{"class":343},[322,1042,1044],{"class":324,"line":1043},13,[322,1045,367],{"emptyLinePlaceholder":366},[322,1047,1049,1052,1054,1056,1058,1060,1063,1065,1067,1070,1072,1074,1077],{"class":324,"line":1048},14,[322,1050,1051],{"class":343},"log",[322,1053,408],{"class":339},[322,1055,779],{"class":379},[322,1057,383],{"class":343},[322,1059,491],{"class":339},[322,1061,1062],{"class":419}," action",[322,1064,497],{"class":339},[322,1066,353],{"class":339},[322,1068,1069],{"class":356},"job_started",[322,1071,422],{"class":339},[322,1073,347],{"class":339},[322,1075,1076],{"class":343},") ",[322,1078,1079],{"class":328},"\u002F\u002F drained automatically\n",[322,1081,1083],{"class":324,"line":1082},15,[322,1084,367],{"emptyLinePlaceholder":366},[322,1086,1088,1090,1093,1095,1097,1099,1101,1104,1106,1108,1111,1113,1115,1118,1120,1122,1125,1127,1129],{"class":324,"line":1087},16,[322,1089,944],{"class":395},[322,1091,1092],{"class":343}," reqLog ",[322,1094,950],{"class":339},[322,1096,887],{"class":379},[322,1098,383],{"class":343},[322,1100,491],{"class":339},[322,1102,1103],{"class":419}," method",[322,1105,497],{"class":339},[322,1107,353],{"class":339},[322,1109,1110],{"class":356},"POST",[322,1112,422],{"class":339},[322,1114,430],{"class":339},[322,1116,1117],{"class":419}," path",[322,1119,497],{"class":339},[322,1121,353],{"class":339},[322,1123,1124],{"class":356},"\u002Fprocess",[322,1126,422],{"class":339},[322,1128,347],{"class":339},[322,1130,444],{"class":343},[322,1132,1134,1137,1139,1142,1144,1146,1149,1151,1155,1157],{"class":324,"line":1133},17,[322,1135,1136],{"class":343},"reqLog",[322,1138,408],{"class":339},[322,1140,1141],{"class":379},"set",[322,1143,383],{"class":343},[322,1145,491],{"class":339},[322,1147,1148],{"class":419}," processed",[322,1150,497],{"class":339},[322,1152,1154],{"class":1153},"sbssI"," 42",[322,1156,347],{"class":339},[322,1158,444],{"class":343},[322,1160,1162,1164,1166,1169,1171],{"class":324,"line":1161},18,[322,1163,1136],{"class":343},[322,1165,408],{"class":339},[322,1167,1168],{"class":379},"emit",[322,1170,502],{"class":343},[322,1172,1079],{"class":328},[322,1174,1176],{"class":324,"line":1175},19,[322,1177,367],{"emptyLinePlaceholder":366},[322,1179,1181,1183,1185,1187,1190],{"class":324,"line":1180},20,[322,1182,593],{"class":335},[322,1184,494],{"class":343},[322,1186,408],{"class":339},[322,1188,1189],{"class":379},"flush",[322,1191,964],{"class":343},[777,1193,1196,1197,1204],{"color":1194,"icon":1195},"neutral","i-lucide-arrow-right","See the full ",[1198,1199,1203],"a",{"href":1200,"rel":1201},"https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fbun-script",[1202],"nofollow","bun-script example"," for a realistic batch processing script.",[288,1206,1208],{"id":1207},"multiple-destinations","Multiple Destinations",[284,1210,1211],{},"Send logs to multiple services simultaneously by composing drains:",[312,1213,1216],{"className":314,"code":1214,"filename":1215,"language":317,"meta":318,"style":318},"import { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createOTLPDrain } from 'evlog\u002Fotlp'\n\nconst axiom = createAxiomDrain()\nconst otlp = createOTLPDrain()\n\nconst drain = async (ctx) => {\n  await Promise.allSettled([axiom(ctx), otlp(ctx)])\n}\n","src\u002Findex.ts",[296,1217,1218,1236,1256,1260,1273,1286,1290,1313,1350],{"__ignoreMap":318},[322,1219,1220,1222,1224,1226,1228,1230,1232,1234],{"class":324,"line":325},[322,1221,336],{"class":335},[322,1223,340],{"class":339},[322,1225,344],{"class":343},[322,1227,347],{"class":339},[322,1229,350],{"class":335},[322,1231,353],{"class":339},[322,1233,357],{"class":356},[322,1235,360],{"class":339},[322,1237,1238,1240,1242,1245,1247,1249,1251,1254],{"class":324,"line":332},[322,1239,336],{"class":335},[322,1241,340],{"class":339},[322,1243,1244],{"class":343}," createOTLPDrain",[322,1246,347],{"class":339},[322,1248,350],{"class":335},[322,1250,353],{"class":339},[322,1252,1253],{"class":356},"evlog\u002Fotlp",[322,1255,360],{"class":339},[322,1257,1258],{"class":324,"line":363},[322,1259,367],{"emptyLinePlaceholder":366},[322,1261,1262,1264,1267,1269,1271],{"class":324,"line":370},[322,1263,944],{"class":395},[322,1265,1266],{"class":343}," axiom ",[322,1268,950],{"class":339},[322,1270,344],{"class":379},[322,1272,964],{"class":343},[322,1274,1275,1277,1280,1282,1284],{"class":324,"line":402},[322,1276,944],{"class":395},[322,1278,1279],{"class":343}," otlp ",[322,1281,950],{"class":339},[322,1283,1244],{"class":379},[322,1285,964],{"class":343},[322,1287,1288],{"class":324,"line":438},[322,1289,367],{"emptyLinePlaceholder":366},[322,1291,1292,1294,1296,1298,1301,1304,1307,1309,1311],{"class":324,"line":967},[322,1293,944],{"class":395},[322,1295,972],{"class":343},[322,1297,950],{"class":339},[322,1299,1300],{"class":395}," async",[322,1302,1303],{"class":339}," (",[322,1305,1306],{"class":388},"ctx",[322,1308,392],{"class":339},[322,1310,396],{"class":395},[322,1312,399],{"class":339},[322,1314,1315,1318,1321,1323,1326,1329,1332,1334,1336,1338,1340,1343,1345,1347],{"class":324,"line":987},[322,1316,1317],{"class":335},"  await",[322,1319,1320],{"class":958}," Promise",[322,1322,408],{"class":339},[322,1324,1325],{"class":379},"allSettled",[322,1327,1328],{"class":419},"([",[322,1330,1331],{"class":379},"axiom",[322,1333,383],{"class":419},[322,1335,1306],{"class":343},[322,1337,392],{"class":419},[322,1339,430],{"class":339},[322,1341,1342],{"class":379}," otlp",[322,1344,383],{"class":419},[322,1346,1306],{"class":343},[322,1348,1349],{"class":419},")])\n",[322,1351,1352],{"class":324,"line":992},[322,1353,1354],{"class":339},"}\n",[284,1356,1357,1358,1360],{},"Then pass ",[296,1359,836],{}," to your framework:",[309,1362,1363,1424,1451,1477,1504,1530,1553],{},[312,1364,1366],{"className":314,"code":1365,"filename":316,"language":317,"meta":318,"style":318},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', drain)\n})\n",[296,1367,1368,1372,1392,1418],{"__ignoreMap":318},[322,1369,1370],{"class":324,"line":325},[322,1371,329],{"class":328},[322,1373,1374,1376,1378,1380,1382,1384,1386,1388,1390],{"class":324,"line":332},[322,1375,373],{"class":335},[322,1377,376],{"class":335},[322,1379,380],{"class":379},[322,1381,383],{"class":343},[322,1383,383],{"class":339},[322,1385,389],{"class":388},[322,1387,392],{"class":339},[322,1389,396],{"class":395},[322,1391,399],{"class":339},[322,1393,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416],{"class":324,"line":363},[322,1395,405],{"class":343},[322,1397,408],{"class":339},[322,1399,411],{"class":343},[322,1401,408],{"class":339},[322,1403,416],{"class":379},[322,1405,383],{"class":419},[322,1407,422],{"class":339},[322,1409,425],{"class":356},[322,1411,422],{"class":339},[322,1413,430],{"class":339},[322,1415,494],{"class":343},[322,1417,444],{"class":419},[322,1419,1420,1422],{"class":324,"line":370},[322,1421,441],{"class":339},[322,1423,444],{"class":343},[312,1425,1427],{"className":314,"code":1426,"filename":150,"language":317,"meta":318,"style":318},"app.use(evlog({ drain }))\n",[296,1428,1429],{"__ignoreMap":318},[322,1430,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449],{"class":324,"line":325},[322,1432,476],{"class":343},[322,1434,408],{"class":339},[322,1436,481],{"class":379},[322,1438,383],{"class":343},[322,1440,486],{"class":379},[322,1442,383],{"class":343},[322,1444,491],{"class":339},[322,1446,972],{"class":343},[322,1448,441],{"class":339},[322,1450,507],{"class":343},[312,1452,1453],{"className":314,"code":1426,"filename":145,"language":317,"meta":318,"style":318},[296,1454,1455],{"__ignoreMap":318},[322,1456,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475],{"class":324,"line":325},[322,1458,476],{"class":343},[322,1460,408],{"class":339},[322,1462,481],{"class":379},[322,1464,383],{"class":343},[322,1466,486],{"class":379},[322,1468,383],{"class":343},[322,1470,491],{"class":339},[322,1472,972],{"class":343},[322,1474,441],{"class":339},[322,1476,507],{"class":343},[312,1478,1480],{"className":314,"code":1479,"filename":155,"language":317,"meta":318,"style":318},"await app.register(evlog, { drain })\n",[296,1481,1482],{"__ignoreMap":318},[322,1483,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502],{"class":324,"line":325},[322,1485,593],{"class":335},[322,1487,596],{"class":343},[322,1489,408],{"class":339},[322,1491,601],{"class":379},[322,1493,604],{"class":343},[322,1495,430],{"class":339},[322,1497,340],{"class":339},[322,1499,972],{"class":343},[322,1501,441],{"class":339},[322,1503,444],{"class":343},[312,1505,1506],{"className":314,"code":1426,"filename":160,"language":317,"meta":318,"style":318},[296,1507,1508],{"__ignoreMap":318},[322,1509,1510,1512,1514,1516,1518,1520,1522,1524,1526,1528],{"class":324,"line":325},[322,1511,476],{"class":343},[322,1513,408],{"class":339},[322,1515,481],{"class":379},[322,1517,383],{"class":343},[322,1519,486],{"class":379},[322,1521,383],{"class":343},[322,1523,491],{"class":339},[322,1525,972],{"class":343},[322,1527,441],{"class":339},[322,1529,507],{"class":343},[312,1531,1533],{"className":314,"code":1532,"filename":140,"language":317,"meta":318,"style":318},"EvlogModule.forRoot({ drain })\n",[296,1534,1535],{"__ignoreMap":318},[322,1536,1537,1539,1541,1543,1545,1547,1549,1551],{"class":324,"line":325},[322,1538,706],{"class":343},[322,1540,408],{"class":339},[322,1542,711],{"class":379},[322,1544,383],{"class":343},[322,1546,491],{"class":339},[322,1548,972],{"class":343},[322,1550,441],{"class":339},[322,1552,444],{"class":343},[312,1554,1556],{"className":314,"code":1555,"filename":175,"language":317,"meta":318,"style":318},"initLogger({ drain })\n",[296,1557,1558],{"__ignoreMap":318},[322,1559,1560,1562,1564,1566,1568,1570],{"class":324,"line":325},[322,1561,759],{"class":379},[322,1563,383],{"class":343},[322,1565,491],{"class":339},[322,1567,972],{"class":343},[322,1569,441],{"class":339},[322,1571,444],{"class":343},[288,1573,1575],{"id":1574},"drain-context","Drain Context",[284,1577,1578,1579,1581],{},"Every adapter receives a ",[296,1580,298],{}," with:",[1583,1584,1585,1601],"table",{},[1586,1587,1588],"thead",{},[1589,1590,1591,1595,1598],"tr",{},[1592,1593,1594],"th",{},"Field",[1592,1596,1597],{},"Type",[1592,1599,1600],{},"Description",[1602,1603,1604,1620,1645],"tbody",{},[1589,1605,1606,1612,1617],{},[1607,1608,1609],"td",{},[296,1610,1611],{},"event",[1607,1613,1614],{},[296,1615,1616],{},"WideEvent",[1607,1618,1619],{},"The complete log event with all accumulated context",[1589,1621,1622,1627,1632],{},[1607,1623,1624],{},[296,1625,1626],{},"request",[1607,1628,1629],{},[296,1630,1631],{},"object",[1607,1633,1634,1635,1638,1639,1638,1642,392],{},"Request metadata (",[296,1636,1637],{},"method",", ",[296,1640,1641],{},"path",[296,1643,1644],{},"requestId",[1589,1646,1647,1652,1656],{},[1607,1648,1649],{},[296,1650,1651],{},"headers",[1607,1653,1654],{},[296,1655,1631],{},[1607,1657,1658],{},"Safe HTTP headers (sensitive headers are filtered)",[777,1660,1662,1665,1666,1638,1669,1638,1672,1675],{"color":1661,"icon":94},"success",[301,1663,1664],{},"Security:"," Sensitive headers (",[296,1667,1668],{},"authorization",[296,1670,1671],{},"cookie",[296,1673,1674],{},"x-api-key",", etc.) are automatically filtered and never passed to adapters.",[288,1677,1679],{"id":1678},"zero-config-setup","Zero-Config Setup",[284,1681,1682],{},"All adapters support automatic configuration via environment variables. No code changes needed when deploying to different environments.",[284,1684,1685,1686,1689],{},"Each adapter reads from ",[296,1687,1688],{},"NUXT_*"," prefixed variables (for Nuxt\u002FNitro runtimeConfig) and unprefixed fallbacks (for any framework):",[312,1691,1696],{"className":1692,"code":1693,"filename":1694,"language":1695,"meta":318,"style":318},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Axiom (NUXT_AXIOM_* or AXIOM_*)\nAXIOM_TOKEN=xaat-xxx\nAXIOM_DATASET=my-logs\n\n# OTLP (NUXT_OTLP_* or OTEL_*)\nOTLP_ENDPOINT=https:\u002F\u002Fotlp.example.com\n\n# HyperDX (NUXT_HYPERDX_* or HYPERDX_*)\nHYPERDX_API_KEY=\u003CYOUR_HYPERDX_API_KEY_HERE>\n\n# PostHog (NUXT_POSTHOG_* or POSTHOG_*)\nPOSTHOG_API_KEY=phc_xxx\n\n# Sentry (NUXT_SENTRY_* or SENTRY_*)\nSENTRY_DSN=https:\u002F\u002Fkey@o0.ingest.sentry.io\u002F123\n\n# Better Stack (NUXT_BETTER_STACK_* or BETTER_STACK_*)\nBETTER_STACK_SOURCE_TOKEN=your-source-token\n",".env","bash",[296,1697,1698,1703,1713,1723,1727,1732,1742,1746,1751,1765,1769,1774,1784,1788,1793,1803,1807,1812],{"__ignoreMap":318},[322,1699,1700],{"class":324,"line":325},[322,1701,1702],{"class":328},"# Axiom (NUXT_AXIOM_* or AXIOM_*)\n",[322,1704,1705,1708,1710],{"class":324,"line":332},[322,1706,1707],{"class":343},"AXIOM_TOKEN",[322,1709,950],{"class":339},[322,1711,1712],{"class":356},"xaat-xxx\n",[322,1714,1715,1718,1720],{"class":324,"line":363},[322,1716,1717],{"class":343},"AXIOM_DATASET",[322,1719,950],{"class":339},[322,1721,1722],{"class":356},"my-logs\n",[322,1724,1725],{"class":324,"line":370},[322,1726,367],{"emptyLinePlaceholder":366},[322,1728,1729],{"class":324,"line":402},[322,1730,1731],{"class":328},"# OTLP (NUXT_OTLP_* or OTEL_*)\n",[322,1733,1734,1737,1739],{"class":324,"line":438},[322,1735,1736],{"class":343},"OTLP_ENDPOINT",[322,1738,950],{"class":339},[322,1740,1741],{"class":356},"https:\u002F\u002Fotlp.example.com\n",[322,1743,1744],{"class":324,"line":967},[322,1745,367],{"emptyLinePlaceholder":366},[322,1747,1748],{"class":324,"line":987},[322,1749,1750],{"class":328},"# HyperDX (NUXT_HYPERDX_* or HYPERDX_*)\n",[322,1752,1753,1756,1759,1762],{"class":324,"line":992},[322,1754,1755],{"class":343},"HYPERDX_API_KEY",[322,1757,1758],{"class":339},"=\u003C",[322,1760,1761],{"class":356},"YOUR_HYPERDX_API_KEY_HERE",[322,1763,1764],{"class":339},">\n",[322,1766,1767],{"class":324,"line":1002},[322,1768,367],{"emptyLinePlaceholder":366},[322,1770,1771],{"class":324,"line":1027},[322,1772,1773],{"class":328},"# PostHog (NUXT_POSTHOG_* or POSTHOG_*)\n",[322,1775,1776,1779,1781],{"class":324,"line":1036},[322,1777,1778],{"class":343},"POSTHOG_API_KEY",[322,1780,950],{"class":339},[322,1782,1783],{"class":356},"phc_xxx\n",[322,1785,1786],{"class":324,"line":1043},[322,1787,367],{"emptyLinePlaceholder":366},[322,1789,1790],{"class":324,"line":1048},[322,1791,1792],{"class":328},"# Sentry (NUXT_SENTRY_* or SENTRY_*)\n",[322,1794,1795,1798,1800],{"class":324,"line":1082},[322,1796,1797],{"class":343},"SENTRY_DSN",[322,1799,950],{"class":339},[322,1801,1802],{"class":356},"https:\u002F\u002Fkey@o0.ingest.sentry.io\u002F123\n",[322,1804,1805],{"class":324,"line":1087},[322,1806,367],{"emptyLinePlaceholder":366},[322,1808,1809],{"class":324,"line":1133},[322,1810,1811],{"class":328},"# Better Stack (NUXT_BETTER_STACK_* or BETTER_STACK_*)\n",[322,1813,1814,1817,1819],{"class":324,"line":1161},[322,1815,1816],{"class":343},"BETTER_STACK_SOURCE_TOKEN",[322,1818,950],{"class":339},[322,1820,1821],{"class":356},"your-source-token\n",[284,1823,1824,1825,1828],{},"Adapters auto-read from these variables, so just call ",[296,1826,1827],{},"createXDrain()"," with no arguments.",[1830,1831,1832],"style",{},"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 .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 .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}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":318,"searchDepth":332,"depth":332,"links":1834},[1835,1836,1837,1838,1839,1840],{"id":290,"depth":332,"text":291},{"id":791,"depth":332,"text":792},{"id":829,"depth":332,"text":830},{"id":1207,"depth":332,"text":1208},{"id":1574,"depth":332,"text":1575},{"id":1678,"depth":332,"text":1679},"Send your logs to external services with evlog adapters. Built-in support for popular observability platforms and custom destinations.","md",[1844,1846,1847,1848,1849,1850,1851],{"label":208,"icon":211,"to":209,"color":1194,"variant":1845},"subtle",{"label":213,"icon":216,"to":214,"color":1194,"variant":1845},{"label":238,"icon":241,"to":239,"color":1194,"variant":1845},{"label":218,"icon":221,"to":219,"color":1194,"variant":1845},{"label":223,"icon":226,"to":224,"color":1194,"variant":1845},{"label":228,"icon":231,"to":229,"color":1194,"variant":1845},{"label":233,"icon":236,"to":234,"color":1194,"variant":1845},{},{"title":36,"icon":196},{"title":279,"description":1841},"pzEpu5BvdsvUj770xNSWhcuQSu18Bq3XvwBvPkuzHXA",[1857,1859],{"title":184,"path":185,"stem":186,"description":1858,"icon":187,"children":-1},"Build your own evlog framework integration using the toolkit API with createMiddlewareLogger, header extraction, AsyncLocalStorage, and the full drain\u002Fenrich\u002Fkeep pipeline.",{"title":198,"path":199,"stem":200,"description":1860,"icon":201,"children":-1},"Batch events, retry on failure, and protect against buffer overflow with the shared drain pipeline. Supports fan-out to multiple adapters.",1775289317595]