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