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