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