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