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