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