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