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