[{"data":1,"prerenderedAt":2395},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-hybrid-hyperdx":529,"-integrate-adapters-hybrid-hyperdx-surround":2390},[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],{"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",{"id":530,"title":531,"body":532,"description":2377,"extension":2378,"links":2379,"meta":2386,"navigation":2387,"path":197,"seo":2388,"stem":198,"__hash__":2389},"docs\u002F4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx.md","HyperDX Adapter",{"type":533,"value":534,"toc":2350},"minimark",[535,556,598,602,605,649,652,657,677,681,703,707,1285,1288,1291,1294,1328,1332,1390,1397,1419,1423,1430,1505,1511,1515,1518,1597,1611,1615,1748,1752,1758,1762,1765,1779,1793,1798,1802,1813,1842,1870,1885,1889,1902,1939,1943,1950,1962,1965,2090,2111,2115,2118,2138,2142,2146,2155,2158,2162,2174,2178,2181,2317,2321,2346],[536,537,538,544,545,549,550,555],"p",{},[539,540,196],"a",{"href":541,"rel":542},"https:\u002F\u002Fhyperdx.io",[543],"nofollow"," is an open-source observability platform. The evlog HyperDX adapter sends your wide events to HyperDX using ",[546,547,548],"strong",{},"OTLP over HTTP",", with defaults aligned to ",[539,551,554],{"href":552,"rel":553},"https:\u002F\u002Fhyperdx.io\u002Fdocs\u002Finstall\u002Fopentelemetry",[543],"HyperDX’s OpenTelemetry documentation",".",[557,558,561,564,586],"prompt",{":actions":559,"description":560,"icon":199},"[\"copy\",\"cursor\",\"claude\"]","Add the HyperDX drain adapter",[536,562,563],{},"Add the HyperDX drain adapter to send evlog wide events to HyperDX.",[565,566,567,571,574,577,580,583],"ol",{},[568,569,570],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[568,572,573],{},"Install evlog if not already installed",[568,575,576],{},"Import createHyperDXDrain from 'evlog\u002Fhyperdx'",[568,578,579],{},"Wire createHyperDXDrain() into my framework's drain configuration",[568,581,582],{},"Set HYPERDX_API_KEY environment variable in .env",[568,584,585],{},"Test by triggering a request and checking HyperDX",[536,587,588,589,593,594],{},"Adapter docs: ",[539,590,591],{"href":591,"rel":592},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx",[543],"\nFramework setup: ",[539,595,596],{"href":596,"rel":597},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[543],[599,600,20],"h2",{"id":601},"installation",[536,603,604],{},"The HyperDX adapter comes bundled with evlog:",[606,607,613],"pre",{"className":608,"code":609,"filename":610,"language":611,"meta":612,"style":612},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n","src\u002Findex.ts","typescript","",[614,615,616],"code",{"__ignoreMap":612},[617,618,621,625,629,633,636,639,642,646],"span",{"class":619,"line":620},"line",1,[617,622,624],{"class":623},"s7zQu","import",[617,626,628],{"class":627},"sMK4o"," {",[617,630,632],{"class":631},"sTEyZ"," createHyperDXDrain",[617,634,635],{"class":627}," }",[617,637,638],{"class":623}," from",[617,640,641],{"class":627}," '",[617,643,645],{"class":644},"sfazB","evlog\u002Fhyperdx",[617,647,648],{"class":627},"'\n",[599,650,25],{"id":651},"quick-start",[653,654,656],"h3",{"id":655},"_1-get-your-ingestion-api-key","1. Get your ingestion API key",[565,658,659,666],{},[568,660,661,662,665],{},"Open the ",[539,663,196],{"href":541,"rel":664},[543]," dashboard for your team",[568,667,668,669,672,673,676],{},"Copy your ",[546,670,671],{},"ingestion API key"," (HyperDX documents this as the value for the ",[614,674,675],{},"authorization"," header in their OpenTelemetry examples)",[653,678,680],{"id":679},"_2-set-environment-variables","2. Set environment variables",[606,682,687],{"className":683,"code":684,"filename":685,"language":686,"meta":612,"style":612},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","HYPERDX_API_KEY=\u003CYOUR_HYPERDX_API_KEY_HERE>\n",".env","bash",[614,688,689],{"__ignoreMap":612},[617,690,691,694,697,700],{"class":619,"line":620},[617,692,693],{"class":631},"HYPERDX_API_KEY",[617,695,696],{"class":627},"=\u003C",[617,698,699],{"class":644},"YOUR_HYPERDX_API_KEY_HERE",[617,701,702],{"class":627},">\n",[653,704,706],{"id":705},"_3-wire-the-drain-to-your-framework","3. Wire the drain to your framework",[708,709,710,824,955,1017,1071,1130,1184,1237],"code-group",{},[606,711,714],{"className":608,"code":712,"filename":713,"language":611,"meta":612,"style":612},"\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",[614,715,716,722,741,748,780,815],{"__ignoreMap":612},[617,717,718],{"class":619,"line":620},[617,719,721],{"class":720},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[617,723,725,727,729,731,733,735,737,739],{"class":619,"line":724},2,[617,726,624],{"class":623},[617,728,628],{"class":627},[617,730,632],{"class":631},[617,732,635],{"class":627},[617,734,638],{"class":623},[617,736,641],{"class":627},[617,738,645],{"class":644},[617,740,648],{"class":627},[617,742,744],{"class":619,"line":743},3,[617,745,747],{"emptyLinePlaceholder":746},true,"\n",[617,749,751,754,757,761,764,766,770,773,777],{"class":619,"line":750},4,[617,752,753],{"class":623},"export",[617,755,756],{"class":623}," default",[617,758,760],{"class":759},"s2Zo4"," defineNitroPlugin",[617,762,763],{"class":631},"(",[617,765,763],{"class":627},[617,767,769],{"class":768},"sHdIc","nitroApp",[617,771,772],{"class":627},")",[617,774,776],{"class":775},"spNyl"," =>",[617,778,779],{"class":627}," {\n",[617,781,783,786,788,791,793,796,799,802,805,807,810,812],{"class":619,"line":782},5,[617,784,785],{"class":631},"  nitroApp",[617,787,555],{"class":627},[617,789,790],{"class":631},"hooks",[617,792,555],{"class":627},[617,794,795],{"class":759},"hook",[617,797,763],{"class":798},"swJcz",[617,800,801],{"class":627},"'",[617,803,804],{"class":644},"evlog:drain",[617,806,801],{"class":627},[617,808,809],{"class":627},",",[617,811,632],{"class":759},[617,813,814],{"class":798},"())\n",[617,816,818,821],{"class":619,"line":817},6,[617,819,820],{"class":627},"}",[617,822,823],{"class":631},")\n",[606,825,827],{"className":608,"code":826,"filename":235,"language":611,"meta":612,"style":612},"\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",[614,828,829,834,854,872,876,915,933,948],{"__ignoreMap":612},[617,830,831],{"class":619,"line":620},[617,832,833],{"class":720},"\u002F\u002F lib\u002Fevlog.ts\n",[617,835,836,838,840,843,845,847,849,852],{"class":619,"line":724},[617,837,624],{"class":623},[617,839,628],{"class":627},[617,841,842],{"class":631}," createEvlog",[617,844,635],{"class":627},[617,846,638],{"class":623},[617,848,641],{"class":627},[617,850,851],{"class":644},"evlog\u002Fnext",[617,853,648],{"class":627},[617,855,856,858,860,862,864,866,868,870],{"class":619,"line":743},[617,857,624],{"class":623},[617,859,628],{"class":627},[617,861,632],{"class":631},[617,863,635],{"class":627},[617,865,638],{"class":623},[617,867,641],{"class":627},[617,869,645],{"class":644},[617,871,648],{"class":627},[617,873,874],{"class":619,"line":750},[617,875,747],{"emptyLinePlaceholder":746},[617,877,878,880,883,885,888,890,893,895,898,900,903,905,908,910,912],{"class":619,"line":782},[617,879,753],{"class":623},[617,881,882],{"class":775}," const",[617,884,628],{"class":627},[617,886,887],{"class":631}," withEvlog",[617,889,809],{"class":627},[617,891,892],{"class":631}," useLogger",[617,894,809],{"class":627},[617,896,897],{"class":631}," log",[617,899,809],{"class":627},[617,901,902],{"class":631}," createError ",[617,904,820],{"class":627},[617,906,907],{"class":627}," =",[617,909,842],{"class":759},[617,911,763],{"class":631},[617,913,914],{"class":627},"{\n",[617,916,917,920,923,925,928,930],{"class":619,"line":817},[617,918,919],{"class":798},"  service",[617,921,922],{"class":627},":",[617,924,641],{"class":627},[617,926,927],{"class":644},"my-app",[617,929,801],{"class":627},[617,931,932],{"class":627},",\n",[617,934,936,939,941,943,946],{"class":619,"line":935},7,[617,937,938],{"class":798},"  drain",[617,940,922],{"class":627},[617,942,632],{"class":759},[617,944,945],{"class":631},"()",[617,947,932],{"class":627},[617,949,951,953],{"class":619,"line":950},8,[617,952,820],{"class":627},[617,954,823],{"class":631},[606,956,958],{"className":608,"code":957,"filename":265,"language":611,"meta":612,"style":612},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\napp.use(evlog({ drain: createHyperDXDrain() }))\n",[614,959,960,978,982],{"__ignoreMap":612},[617,961,962,964,966,968,970,972,974,976],{"class":619,"line":620},[617,963,624],{"class":623},[617,965,628],{"class":627},[617,967,632],{"class":631},[617,969,635],{"class":627},[617,971,638],{"class":623},[617,973,641],{"class":627},[617,975,645],{"class":644},[617,977,648],{"class":627},[617,979,980],{"class":619,"line":724},[617,981,747],{"emptyLinePlaceholder":746},[617,983,984,987,989,992,994,997,999,1002,1005,1007,1009,1012,1014],{"class":619,"line":743},[617,985,986],{"class":631},"app",[617,988,555],{"class":627},[617,990,991],{"class":759},"use",[617,993,763],{"class":631},[617,995,996],{"class":759},"evlog",[617,998,763],{"class":631},[617,1000,1001],{"class":627},"{",[617,1003,1004],{"class":798}," drain",[617,1006,922],{"class":627},[617,1008,632],{"class":759},[617,1010,1011],{"class":631},"() ",[617,1013,820],{"class":627},[617,1015,1016],{"class":631},"))\n",[606,1018,1019],{"className":608,"code":957,"filename":260,"language":611,"meta":612,"style":612},[614,1020,1021,1039,1043],{"__ignoreMap":612},[617,1022,1023,1025,1027,1029,1031,1033,1035,1037],{"class":619,"line":620},[617,1024,624],{"class":623},[617,1026,628],{"class":627},[617,1028,632],{"class":631},[617,1030,635],{"class":627},[617,1032,638],{"class":623},[617,1034,641],{"class":627},[617,1036,645],{"class":644},[617,1038,648],{"class":627},[617,1040,1041],{"class":619,"line":724},[617,1042,747],{"emptyLinePlaceholder":746},[617,1044,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069],{"class":619,"line":743},[617,1046,986],{"class":631},[617,1048,555],{"class":627},[617,1050,991],{"class":759},[617,1052,763],{"class":631},[617,1054,996],{"class":759},[617,1056,763],{"class":631},[617,1058,1001],{"class":627},[617,1060,1004],{"class":798},[617,1062,922],{"class":627},[617,1064,632],{"class":759},[617,1066,1011],{"class":631},[617,1068,820],{"class":627},[617,1070,1016],{"class":631},[606,1072,1074],{"className":608,"code":1073,"filename":270,"language":611,"meta":612,"style":612},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\nawait app.register(evlog, { drain: createHyperDXDrain() })\n",[614,1075,1076,1094,1098],{"__ignoreMap":612},[617,1077,1078,1080,1082,1084,1086,1088,1090,1092],{"class":619,"line":620},[617,1079,624],{"class":623},[617,1081,628],{"class":627},[617,1083,632],{"class":631},[617,1085,635],{"class":627},[617,1087,638],{"class":623},[617,1089,641],{"class":627},[617,1091,645],{"class":644},[617,1093,648],{"class":627},[617,1095,1096],{"class":619,"line":724},[617,1097,747],{"emptyLinePlaceholder":746},[617,1099,1100,1103,1106,1108,1111,1114,1116,1118,1120,1122,1124,1126,1128],{"class":619,"line":743},[617,1101,1102],{"class":623},"await",[617,1104,1105],{"class":631}," app",[617,1107,555],{"class":627},[617,1109,1110],{"class":759},"register",[617,1112,1113],{"class":631},"(evlog",[617,1115,809],{"class":627},[617,1117,628],{"class":627},[617,1119,1004],{"class":798},[617,1121,922],{"class":627},[617,1123,632],{"class":759},[617,1125,1011],{"class":631},[617,1127,820],{"class":627},[617,1129,823],{"class":631},[606,1131,1132],{"className":608,"code":957,"filename":275,"language":611,"meta":612,"style":612},[614,1133,1134,1152,1156],{"__ignoreMap":612},[617,1135,1136,1138,1140,1142,1144,1146,1148,1150],{"class":619,"line":620},[617,1137,624],{"class":623},[617,1139,628],{"class":627},[617,1141,632],{"class":631},[617,1143,635],{"class":627},[617,1145,638],{"class":623},[617,1147,641],{"class":627},[617,1149,645],{"class":644},[617,1151,648],{"class":627},[617,1153,1154],{"class":619,"line":724},[617,1155,747],{"emptyLinePlaceholder":746},[617,1157,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182],{"class":619,"line":743},[617,1159,986],{"class":631},[617,1161,555],{"class":627},[617,1163,991],{"class":759},[617,1165,763],{"class":631},[617,1167,996],{"class":759},[617,1169,763],{"class":631},[617,1171,1001],{"class":627},[617,1173,1004],{"class":798},[617,1175,922],{"class":627},[617,1177,632],{"class":759},[617,1179,1011],{"class":631},[617,1181,820],{"class":627},[617,1183,1016],{"class":631},[606,1185,1187],{"className":608,"code":1186,"filename":255,"language":611,"meta":612,"style":612},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\nEvlogModule.forRoot({ drain: createHyperDXDrain() })\n",[614,1188,1189,1207,1211],{"__ignoreMap":612},[617,1190,1191,1193,1195,1197,1199,1201,1203,1205],{"class":619,"line":620},[617,1192,624],{"class":623},[617,1194,628],{"class":627},[617,1196,632],{"class":631},[617,1198,635],{"class":627},[617,1200,638],{"class":623},[617,1202,641],{"class":627},[617,1204,645],{"class":644},[617,1206,648],{"class":627},[617,1208,1209],{"class":619,"line":724},[617,1210,747],{"emptyLinePlaceholder":746},[617,1212,1213,1216,1218,1221,1223,1225,1227,1229,1231,1233,1235],{"class":619,"line":743},[617,1214,1215],{"class":631},"EvlogModule",[617,1217,555],{"class":627},[617,1219,1220],{"class":759},"forRoot",[617,1222,763],{"class":631},[617,1224,1001],{"class":627},[617,1226,1004],{"class":798},[617,1228,922],{"class":627},[617,1230,632],{"class":759},[617,1232,1011],{"class":631},[617,1234,820],{"class":627},[617,1236,823],{"class":631},[606,1238,1240],{"className":608,"code":1239,"filename":290,"language":611,"meta":612,"style":612},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\ninitLogger({ drain: createHyperDXDrain() })\n",[614,1241,1242,1260,1264],{"__ignoreMap":612},[617,1243,1244,1246,1248,1250,1252,1254,1256,1258],{"class":619,"line":620},[617,1245,624],{"class":623},[617,1247,628],{"class":627},[617,1249,632],{"class":631},[617,1251,635],{"class":627},[617,1253,638],{"class":623},[617,1255,641],{"class":627},[617,1257,645],{"class":644},[617,1259,648],{"class":627},[617,1261,1262],{"class":619,"line":724},[617,1263,747],{"emptyLinePlaceholder":746},[617,1265,1266,1269,1271,1273,1275,1277,1279,1281,1283],{"class":619,"line":743},[617,1267,1268],{"class":759},"initLogger",[617,1270,763],{"class":631},[617,1272,1001],{"class":627},[617,1274,1004],{"class":798},[617,1276,922],{"class":627},[617,1278,632],{"class":759},[617,1280,1011],{"class":631},[617,1282,820],{"class":627},[617,1284,823],{"class":631},[536,1286,1287],{},"That's it! Your wide events will now appear in HyperDX.",[599,1289,504],{"id":1290},"configuration",[536,1292,1293],{},"The adapter reads configuration from multiple sources (highest priority first):",[565,1295,1296,1305,1319],{},[568,1297,1298,1301,1302],{},[546,1299,1300],{},"Overrides"," passed to ",[614,1303,1304],{},"createHyperDXDrain()",[568,1306,1307,1310,1311,1314,1315,1318],{},[546,1308,1309],{},"Runtime config"," at ",[614,1312,1313],{},"runtimeConfig.evlog.hyperdx"," or ",[614,1316,1317],{},"runtimeConfig.hyperdx"," (Nuxt\u002FNitro only)",[568,1320,1321,1324,1325,772],{},[546,1322,1323],{},"Environment variables"," (",[614,1326,1327],{},"HYPERDX_*",[653,1329,1331],{"id":1330},"environment-variables","Environment Variables",[1333,1334,1335,1348],"table",{},[1336,1337,1338],"thead",{},[1339,1340,1341,1345],"tr",{},[1342,1343,1344],"th",{},"Variable",[1342,1346,1347],{},"Description",[1349,1350,1351,1364,1377],"tbody",{},[1339,1352,1353,1358],{},[1354,1355,1356],"td",{},[614,1357,693],{},[1354,1359,1360,1361,1363],{},"Ingestion API key (sent as the ",[614,1362,675],{}," header)",[1339,1365,1366,1371],{},[1354,1367,1368],{},[614,1369,1370],{},"HYPERDX_OTLP_ENDPOINT",[1354,1372,1373,1374,772],{},"OTLP HTTP base URL (default: ",[614,1375,1376],{},"https:\u002F\u002Fin-otel.hyperdx.io",[1339,1378,1379,1384],{},[1354,1380,1381],{},[614,1382,1383],{},"HYPERDX_SERVICE_NAME",[1354,1385,1386,1387],{},"Override ",[614,1388,1389],{},"service.name",[536,1391,1392,1393,1396],{},"The following variable is also read when resolving ",[614,1394,1395],{},"serviceName"," (same as the OTLP adapter):",[1333,1398,1399,1407],{},[1336,1400,1401],{},[1339,1402,1403,1405],{},[1342,1404,1344],{},[1342,1406,1347],{},[1349,1408,1409],{},[1339,1410,1411,1416],{},[1354,1412,1413],{},[614,1414,1415],{},"OTEL_SERVICE_NAME",[1354,1417,1418],{},"Fallback for service name (HyperDX SDK examples use this)",[653,1420,1422],{"id":1421},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[536,1424,1425,1426,1429],{},"Configure via ",[614,1427,1428],{},"nuxt.config.ts"," for type-safe configuration:",[606,1431,1433],{"className":608,"code":1432,"filename":1428,"language":611,"meta":612,"style":612},"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",[614,1434,1435,1448,1457,1466,1481,1489,1494,1499],{"__ignoreMap":612},[617,1436,1437,1439,1441,1444,1446],{"class":619,"line":620},[617,1438,753],{"class":623},[617,1440,756],{"class":623},[617,1442,1443],{"class":759}," defineNuxtConfig",[617,1445,763],{"class":631},[617,1447,914],{"class":627},[617,1449,1450,1453,1455],{"class":619,"line":724},[617,1451,1452],{"class":798},"  runtimeConfig",[617,1454,922],{"class":627},[617,1456,779],{"class":627},[617,1458,1459,1462,1464],{"class":619,"line":743},[617,1460,1461],{"class":798},"    hyperdx",[617,1463,922],{"class":627},[617,1465,779],{"class":627},[617,1467,1468,1471,1473,1476,1478],{"class":619,"line":750},[617,1469,1470],{"class":798},"      apiKey",[617,1472,922],{"class":627},[617,1474,1475],{"class":627}," ''",[617,1477,809],{"class":627},[617,1479,1480],{"class":720}," \u002F\u002F Set via HYPERDX_API_KEY\n",[617,1482,1483,1486],{"class":619,"line":782},[617,1484,1485],{"class":720},"      \u002F\u002F endpoint: '',",[617,1487,1488],{"class":720}," \u002F\u002F Set via HYPERDX_OTLP_ENDPOINT\n",[617,1490,1491],{"class":619,"line":817},[617,1492,1493],{"class":627},"    },\n",[617,1495,1496],{"class":619,"line":935},[617,1497,1498],{"class":627},"  },\n",[617,1500,1501,1503],{"class":619,"line":950},[617,1502,820],{"class":627},[617,1504,823],{"class":631},[536,1506,1507,1508,1510],{},"You can also nest keys under ",[614,1509,1313],{},"; both match how the adapter resolves Nuxt runtime config.",[653,1512,1514],{"id":1513},"override-options","Override Options",[536,1516,1517],{},"Pass options directly to override any configuration:",[606,1519,1522],{"className":608,"code":1520,"filename":1521,"language":611,"meta":612,"style":612},"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",[614,1523,1524,1541,1563,1578,1591],{"__ignoreMap":612},[617,1525,1526,1529,1532,1535,1537,1539],{"class":619,"line":620},[617,1527,1528],{"class":775},"const",[617,1530,1531],{"class":631}," drain ",[617,1533,1534],{"class":627},"=",[617,1536,632],{"class":759},[617,1538,763],{"class":631},[617,1540,914],{"class":627},[617,1542,1543,1546,1548,1551,1553,1556,1558,1560],{"class":619,"line":724},[617,1544,1545],{"class":798},"  apiKey",[617,1547,922],{"class":627},[617,1549,1550],{"class":631}," process",[617,1552,555],{"class":627},[617,1554,1555],{"class":631},"env",[617,1557,555],{"class":627},[617,1559,693],{"class":631},[617,1561,1562],{"class":627},"!,\n",[617,1564,1565,1568,1570,1572,1574,1576],{"class":619,"line":743},[617,1566,1567],{"class":798},"  endpoint",[617,1569,922],{"class":627},[617,1571,641],{"class":627},[617,1573,1376],{"class":644},[617,1575,801],{"class":627},[617,1577,932],{"class":627},[617,1579,1580,1583,1585,1589],{"class":619,"line":750},[617,1581,1582],{"class":798},"  timeout",[617,1584,922],{"class":627},[617,1586,1588],{"class":1587},"sbssI"," 10000",[617,1590,932],{"class":627},[617,1592,1593,1595],{"class":619,"line":782},[617,1594,820],{"class":627},[617,1596,823],{"class":631},[536,1598,1599,1600,1603,1604,1606,1607,1610],{},"For self-hosted HyperDX, set ",[614,1601,1602],{},"endpoint"," to your OTLP HTTP base URL (same role as ",[614,1605,1602],{}," in HyperDX’s ",[614,1608,1609],{},"otlphttp"," exporter example).",[653,1612,1614],{"id":1613},"full-configuration-reference","Full Configuration Reference",[1333,1616,1617,1632],{},[1336,1618,1619],{},[1339,1620,1621,1624,1627,1630],{},[1342,1622,1623],{},"Option",[1342,1625,1626],{},"Type",[1342,1628,1629],{},"Default",[1342,1631,1347],{},[1349,1633,1634,1655,1675,1692,1709,1729],{},[1339,1635,1636,1641,1646,1649],{},[1354,1637,1638],{},[614,1639,1640],{},"apiKey",[1354,1642,1643],{},[614,1644,1645],{},"string",[1354,1647,1648],{},"-",[1354,1650,1651,1652,1654],{},"Ingestion API key (required). Sent as the ",[614,1653,675],{}," header value",[1339,1656,1657,1661,1665,1669],{},[1354,1658,1659],{},[614,1660,1602],{},[1354,1662,1663],{},[614,1664,1645],{},[1354,1666,1667],{},[614,1668,1376],{},[1354,1670,1671,1672,772],{},"OTLP HTTP base URL (evlog appends ",[614,1673,1674],{},"\u002Fv1\u002Flogs",[1339,1676,1677,1681,1685,1687],{},[1354,1678,1679],{},[614,1680,1395],{},[1354,1682,1683],{},[614,1684,1645],{},[1354,1686,1648],{},[1354,1688,1386,1689,1691],{},[614,1690,1389],{}," resource attribute",[1339,1693,1694,1699,1704,1706],{},[1354,1695,1696],{},[614,1697,1698],{},"resourceAttributes",[1354,1700,1701],{},[614,1702,1703],{},"object",[1354,1705,1648],{},[1354,1707,1708],{},"Additional OTLP resource attributes",[1339,1710,1711,1716,1721,1726],{},[1354,1712,1713],{},[614,1714,1715],{},"timeout",[1354,1717,1718],{},[614,1719,1720],{},"number",[1354,1722,1723],{},[614,1724,1725],{},"5000",[1354,1727,1728],{},"Request timeout in milliseconds",[1339,1730,1731,1736,1740,1745],{},[1354,1732,1733],{},[614,1734,1735],{},"retries",[1354,1737,1738],{},[614,1739,1720],{},[1354,1741,1742],{},[614,1743,1744],{},"2",[1354,1746,1747],{},"Retry attempts on transient failures",[599,1749,1751],{"id":1750},"deployment","Deployment",[536,1753,1754,1755,1757],{},"HyperDX is open source, so the adapter targets a managed account and a cluster\nyou run yourself with the same code — only ",[614,1756,1602],{}," changes.",[653,1759,1761],{"id":1760},"hyperdx-cloud","HyperDX Cloud",[536,1763,1764],{},"The default. Set the API key and nothing else:",[606,1766,1769],{"className":608,"code":1767,"filename":1768,"language":611,"meta":612,"style":612},"createHyperDXDrain()\n","server\u002Fplugins\u002Fevlog.ts",[614,1770,1771],{"__ignoreMap":612},[617,1772,1773,1776],{"class":619,"line":620},[617,1774,1775],{"class":759},"createHyperDXDrain",[617,1777,1778],{"class":631},"()\n",[606,1780,1782],{"className":683,"code":1781,"filename":685,"language":686,"meta":612,"style":612},"HYPERDX_API_KEY=your-ingestion-key\n",[614,1783,1784],{"__ignoreMap":612},[617,1785,1786,1788,1790],{"class":619,"line":620},[617,1787,693],{"class":631},[617,1789,1534],{"class":627},[617,1791,1792],{"class":644},"your-ingestion-key\n",[536,1794,1795,1796,555],{},"The endpoint defaults to ",[614,1797,1376],{},[653,1799,1801],{"id":1800},"self-hosted","Self-hosted",[536,1803,1804,1805,1807,1808,1810,1811,922],{},"Point ",[614,1806,1602],{}," at your own OTLP HTTP collector — the same value you would put\nin an ",[614,1809,1609],{}," exporter's ",[614,1812,1602],{},[606,1814,1816],{"className":608,"code":1815,"filename":1768,"language":611,"meta":612,"style":612},"createHyperDXDrain({ endpoint: 'http:\u002F\u002Fhyperdx.internal:4318' })\n",[614,1817,1818],{"__ignoreMap":612},[617,1819,1820,1822,1824,1826,1829,1831,1833,1836,1838,1840],{"class":619,"line":620},[617,1821,1775],{"class":759},[617,1823,763],{"class":631},[617,1825,1001],{"class":627},[617,1827,1828],{"class":798}," endpoint",[617,1830,922],{"class":627},[617,1832,641],{"class":627},[617,1834,1835],{"class":644},"http:\u002F\u002Fhyperdx.internal:4318",[617,1837,801],{"class":627},[617,1839,635],{"class":627},[617,1841,823],{"class":631},[606,1843,1845],{"className":683,"code":1844,"filename":685,"language":686,"meta":612,"style":612},"HYPERDX_OTLP_ENDPOINT=http:\u002F\u002Fhyperdx.internal:4318\n# Only if your deployment enforces auth:\nHYPERDX_API_KEY=your-key\n",[614,1846,1847,1856,1861],{"__ignoreMap":612},[617,1848,1849,1851,1853],{"class":619,"line":620},[617,1850,1370],{"class":631},[617,1852,1534],{"class":627},[617,1854,1855],{"class":644},"http:\u002F\u002Fhyperdx.internal:4318\n",[617,1857,1858],{"class":619,"line":724},[617,1859,1860],{"class":720},"# Only if your deployment enforces auth:\n",[617,1862,1863,1865,1867],{"class":619,"line":743},[617,1864,693],{"class":631},[617,1866,1534],{"class":627},[617,1868,1869],{"class":644},"your-key\n",[1871,1872,1874,1875,1878,1879,1881,1882,555],"callout",{"color":1873,"icon":13},"info","Give the ",[546,1876,1877],{},"base"," URL, not the signal path — evlog appends ",[614,1880,1674],{}," itself.\nA self-hosted collector on the default OTLP HTTP port is ",[614,1883,1884],{},"http:\u002F\u002Fhost:4318",[599,1886,1888],{"id":1887},"how-it-works","How It Works",[536,1890,1891,1892,1894,1895,1898,1899,922],{},"Under the hood, ",[614,1893,1304],{}," maps your HyperDX settings to the shared ",[539,1896,1897],{"href":192},"OTLP adapter"," and calls ",[614,1900,1901],{},"sendBatchToOTLP()",[1903,1904,1905,1917,1929],"ul",{},[568,1906,1907,1910,1911,1913,1914,772],{},[546,1908,1909],{},"Endpoint",": OTLP HTTP base URL, defaulting to ",[614,1912,1376],{}," (evlog posts to ",[614,1915,1916],{},"{endpoint}\u002Fv1\u002Flogs",[568,1918,1919,1922,1923,1925,1926,1928],{},[546,1920,1921],{},"Auth",": ",[614,1924,675],{}," header set to your API key (same as HyperDX’s documented ",[614,1927,1609],{}," exporter)",[568,1930,1931,1934,1935,1938],{},[546,1932,1933],{},"Format",": Standard OTLP JSON ",[614,1936,1937],{},"ExportLogsServiceRequest"," with severity, trace context when present, and structured attributes",[599,1940,1942],{"id":1941},"official-hyperdx-opentelemetry-reference","Official HyperDX OpenTelemetry reference",[536,1944,1945,1946,922],{},"From ",[539,1947,1949],{"href":552,"rel":1948},[543],"HyperDX — OpenTelemetry",[1951,1952,1953],"blockquote",{},[536,1954,1955,1956,1958,1959,1961],{},"Our OpenTelemetry HTTP endpoint is hosted at ",[614,1957,1376],{}," (gRPC at port 4317), and requires the ",[614,1960,675],{}," header to be set to your API key.",[536,1963,1964],{},"HyperDX documents this collector configuration (HTTP and gRPC exporters):",[606,1966,1971],{"className":1967,"code":1968,"filename":1969,"language":1970,"meta":612,"style":612},"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",[614,1972,1973,1981,1986,1993,2006,2013,2023,2033,2037,2043,2051,2065,2072,2081],{"__ignoreMap":612},[617,1974,1975,1978],{"class":619,"line":620},[617,1976,1977],{"class":798},"exporters",[617,1979,1980],{"class":627},":\n",[617,1982,1983],{"class":619,"line":724},[617,1984,1985],{"class":720},"  # HTTP setup\n",[617,1987,1988,1991],{"class":619,"line":743},[617,1989,1990],{"class":798},"  otlphttp\u002Fhdx",[617,1992,1980],{"class":627},[617,1994,1995,1998,2000,2002,2004],{"class":619,"line":750},[617,1996,1997],{"class":798},"    endpoint",[617,1999,922],{"class":627},[617,2001,641],{"class":627},[617,2003,1376],{"class":644},[617,2005,648],{"class":627},[617,2007,2008,2011],{"class":619,"line":782},[617,2009,2010],{"class":798},"    headers",[617,2012,1980],{"class":627},[617,2014,2015,2018,2020],{"class":619,"line":817},[617,2016,2017],{"class":798},"      authorization",[617,2019,922],{"class":627},[617,2021,2022],{"class":644}," \u003CYOUR_HYPERDX_API_KEY_HERE>\n",[617,2024,2025,2028,2030],{"class":619,"line":935},[617,2026,2027],{"class":798},"    compression",[617,2029,922],{"class":627},[617,2031,2032],{"class":644}," gzip\n",[617,2034,2035],{"class":619,"line":950},[617,2036,747],{"emptyLinePlaceholder":746},[617,2038,2040],{"class":619,"line":2039},9,[617,2041,2042],{"class":720},"  # gRPC setup (alternative)\n",[617,2044,2046,2049],{"class":619,"line":2045},10,[617,2047,2048],{"class":798},"  otlp\u002Fhdx",[617,2050,1980],{"class":627},[617,2052,2054,2056,2058,2060,2063],{"class":619,"line":2053},11,[617,2055,1997],{"class":798},[617,2057,922],{"class":627},[617,2059,641],{"class":627},[617,2061,2062],{"class":644},"in-otel.hyperdx.io:4317",[617,2064,648],{"class":627},[617,2066,2068,2070],{"class":619,"line":2067},12,[617,2069,2010],{"class":798},[617,2071,1980],{"class":627},[617,2073,2075,2077,2079],{"class":619,"line":2074},13,[617,2076,2017],{"class":798},[617,2078,922],{"class":627},[617,2080,2022],{"class":644},[617,2082,2084,2086,2088],{"class":619,"line":2083},14,[617,2085,2027],{"class":798},[617,2087,922],{"class":627},[617,2089,2032],{"class":644},[536,2091,2092,2093,2096,2097,2099,2100,2103,2104,2106,2107,2110],{},"evlog uses the ",[546,2094,2095],{},"HTTP"," path: JSON to ",[614,2098,1916],{}," with ",[614,2101,2102],{},"Content-Type: application\u002Fjson"," and the ",[614,2105,675],{}," header above. The collector may enable ",[614,2108,2109],{},"compression: gzip","; evlog sends uncompressed JSON bodies like typical OTLP HTTP clients.",[599,2112,2114],{"id":2113},"querying-logs-in-hyperdx","Querying logs in HyperDX",[536,2116,2117],{},"Use the HyperDX UI to search and explore wide events:",[1903,2119,2120,2126,2132],{},[568,2121,2122,2125],{},[546,2123,2124],{},"Search",": Filter by fields from your wide events (level, service, path, custom attributes, etc.)",[568,2127,2128,2131],{},[546,2129,2130],{},"Live tail",": Stream incoming logs",[568,2133,2134,2137],{},[546,2135,2136],{},"Dashboards",": Build views on top of structured log data",[599,2139,2141],{"id":2140},"troubleshooting","Troubleshooting",[653,2143,2145],{"id":2144},"missing-apikey-error","Missing apiKey error",[606,2147,2153],{"className":2148,"code":2150,"filename":2151,"language":2152,"meta":612},[2149],"language-text","[evlog\u002Fhyperdx] Missing apiKey. Set HYPERDX_API_KEY, or pass to createHyperDXDrain()\n","Console","text",[614,2154,2150],{"__ignoreMap":612},[536,2156,2157],{},"Make sure your environment variables are set and the server was restarted after adding them.",[653,2159,2161],{"id":2160},"_401-unauthorized-or-ingest-rejected","401 Unauthorized or ingest rejected",[536,2163,2164,2165,2169,2170,2173],{},"Your API key may be invalid or not permitted to ingest. Confirm the key in HyperDX matches the ingestion key used in their ",[539,2166,2168],{"href":552,"rel":2167},[543],"OpenTelemetry"," examples (",[614,2171,2172],{},"authorization: \u003CYOUR_HYPERDX_API_KEY_HERE>",").",[599,2175,2177],{"id":2176},"direct-api-usage","Direct API Usage",[536,2179,2180],{},"For advanced use cases, you can use the lower-level functions:",[606,2182,2185],{"className":608,"code":2183,"filename":2184,"language":611,"meta":612,"style":612},"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",[614,2186,2187,2211,2215,2220,2233,2251,2257,2261,2266,2279,2297,2311],{"__ignoreMap":612},[617,2188,2189,2191,2193,2196,2198,2201,2203,2205,2207,2209],{"class":619,"line":620},[617,2190,624],{"class":623},[617,2192,628],{"class":627},[617,2194,2195],{"class":631}," sendToHyperDX",[617,2197,809],{"class":627},[617,2199,2200],{"class":631}," sendBatchToHyperDX",[617,2202,635],{"class":627},[617,2204,638],{"class":623},[617,2206,641],{"class":627},[617,2208,645],{"class":644},[617,2210,648],{"class":627},[617,2212,2213],{"class":619,"line":724},[617,2214,747],{"emptyLinePlaceholder":746},[617,2216,2217],{"class":619,"line":743},[617,2218,2219],{"class":720},"\u002F\u002F Send a single event\n",[617,2221,2222,2224,2226,2229,2231],{"class":619,"line":750},[617,2223,1102],{"class":623},[617,2225,2195],{"class":759},[617,2227,2228],{"class":631},"(event",[617,2230,809],{"class":627},[617,2232,779],{"class":627},[617,2234,2235,2237,2239,2241,2243,2245,2247,2249],{"class":619,"line":782},[617,2236,1545],{"class":798},[617,2238,922],{"class":627},[617,2240,1550],{"class":631},[617,2242,555],{"class":627},[617,2244,1555],{"class":631},[617,2246,555],{"class":627},[617,2248,693],{"class":631},[617,2250,1562],{"class":627},[617,2252,2253,2255],{"class":619,"line":817},[617,2254,820],{"class":627},[617,2256,823],{"class":631},[617,2258,2259],{"class":619,"line":935},[617,2260,747],{"emptyLinePlaceholder":746},[617,2262,2263],{"class":619,"line":950},[617,2264,2265],{"class":720},"\u002F\u002F Send multiple events in one request\n",[617,2267,2268,2270,2272,2275,2277],{"class":619,"line":2039},[617,2269,1102],{"class":623},[617,2271,2200],{"class":759},[617,2273,2274],{"class":631},"(events",[617,2276,809],{"class":627},[617,2278,779],{"class":627},[617,2280,2281,2283,2285,2287,2289,2291,2293,2295],{"class":619,"line":2045},[617,2282,1545],{"class":798},[617,2284,922],{"class":627},[617,2286,1550],{"class":631},[617,2288,555],{"class":627},[617,2290,1555],{"class":631},[617,2292,555],{"class":627},[617,2294,693],{"class":631},[617,2296,1562],{"class":627},[617,2298,2299,2301,2303,2305,2307,2309],{"class":619,"line":2053},[617,2300,1567],{"class":798},[617,2302,922],{"class":627},[617,2304,641],{"class":627},[617,2306,1376],{"class":644},[617,2308,801],{"class":627},[617,2310,932],{"class":627},[617,2312,2313,2315],{"class":619,"line":2067},[617,2314,820],{"class":627},[617,2316,823],{"class":631},[599,2318,2320],{"id":2319},"next-steps","Next Steps",[1903,2322,2323,2329,2335,2341],{},[568,2324,2325,2328],{},[539,2326,2327],{"href":192},"OTLP Adapter"," - Send logs via OpenTelemetry Protocol to any OTLP backend",[568,2330,2331,2334],{},[539,2332,2333],{"href":157},"PostHog Adapter"," - Send logs to PostHog Logs via OTLP",[568,2336,2337,2340],{},[539,2338,2339],{"href":491},"Custom Adapters"," - Build your own adapter",[568,2342,2343,2345],{},[539,2344,517],{"href":518}," - Security and production tips",[2347,2348,2349],"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":612,"searchDepth":724,"depth":724,"links":2351},[2352,2353,2358,2364,2368,2369,2370,2371,2375,2376],{"id":601,"depth":724,"text":20},{"id":651,"depth":724,"text":25,"children":2354},[2355,2356,2357],{"id":655,"depth":743,"text":656},{"id":679,"depth":743,"text":680},{"id":705,"depth":743,"text":706},{"id":1290,"depth":724,"text":504,"children":2359},[2360,2361,2362,2363],{"id":1330,"depth":743,"text":1331},{"id":1421,"depth":743,"text":1422},{"id":1513,"depth":743,"text":1514},{"id":1613,"depth":743,"text":1614},{"id":1750,"depth":724,"text":1751,"children":2365},[2366,2367],{"id":1760,"depth":743,"text":1761},{"id":1800,"depth":743,"text":1801},{"id":1887,"depth":724,"text":1888},{"id":1941,"depth":724,"text":1942},{"id":2113,"depth":724,"text":2114},{"id":2140,"depth":724,"text":2141,"children":2372},[2373,2374],{"id":2144,"depth":743,"text":2145},{"id":2160,"depth":743,"text":2161},{"id":2176,"depth":724,"text":2177},{"id":2319,"depth":724,"text":2320},"Send wide events to HyperDX via OTLP\u002FHTTP using HyperDX’s documented OpenTelemetry endpoint and authorization header. Zero-config setup with environment variables.","md",[2380,2385],{"label":196,"icon":2381,"to":541,"target":2382,"color":2383,"variant":2384},"i-lucide-external-link","_blank","neutral","subtle",{"label":2327,"icon":194,"to":192,"color":2383,"variant":2384},{},{"title":196,"icon":199},{"title":531,"description":2377},"tQ-0-hLWTm0_Ax6BTiU6nU38qpdYRPiH64pOy7p95uc",[2391,2393],{"title":191,"path":192,"stem":193,"description":2392,"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":2394,"icon":209,"children":-1},"Write wide events to the local file system as NDJSON for local debugging, AI agent integration, and production backup.",1786001794232]