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