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