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