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