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