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