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