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