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