[{"data":1,"prerenderedAt":3255},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-hybrid-otlp":576,"-integrate-adapters-hybrid-otlp-surround":3250},[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":3235,"extension":3236,"links":3237,"meta":3246,"navigation":3247,"path":202,"seo":3248,"stem":203,"__hash__":3249},"docs\u002F4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp.md","OTLP Adapter",{"type":580,"value":581,"toc":3206},"minimark",[582,586,630,676,680,683,727,730,735,754,758,1337,1340,1343,1369,1373,1437,1441,1509,1513,1641,1645,1780,1784,1787,1791,1794,1929,1979,1991,1994,1998,2001,2085,2094,2098,2101,2219,2246,2250,2257,2731,2736,2848,2863,2871,2875,2942,2946,2950,2959,2962,2966,2969,2983,2987,2994,3005,3009,3024,3028,3031,3173,3177,3202],[583,584,585],"p",{},"The OTLP (OpenTelemetry Protocol) adapter sends logs in the standard OpenTelemetry format. This works with any OTLP-compatible backend including:",[587,588,589,597,601,606,611,616,621,626],"ul",{},[590,591,592,596],"li",{},[593,594,595],"strong",{},"Grafana Cloud"," (Loki)",[590,598,599],{},[593,600,181],{},[590,602,603],{},[593,604,605],{},"Honeycomb",[590,607,608],{},[593,609,610],{},"Jaeger",[590,612,613],{},[593,614,615],{},"Splunk",[590,617,618],{},[593,619,620],{},"New Relic",[590,622,623],{},[593,624,625],{},"Self-hosted OpenTelemetry Collector",[590,627,628],{},[593,629,206],{},[631,632,635,638,662],"prompt",{":actions":633,"description":634,"icon":204},"[\"copy\",\"cursor\",\"claude\"]","Add the OTLP drain adapter",[583,636,637],{},"Add the OTLP drain adapter to send evlog wide events via OpenTelemetry Protocol.",[639,640,641,644,647,650,653,656,659],"ol",{},[590,642,643],{},"Identify which framework I'm using and follow its evlog integration pattern",[590,645,646],{},"Install evlog if not already installed",[590,648,649],{},"Import createOTLPDrain from 'evlog\u002Fotlp'",[590,651,652],{},"Wire createOTLPDrain() into my framework's drain configuration",[590,654,655],{},"Set OTLP_ENDPOINT environment variable (collector URL)",[590,657,658],{},"Optionally set OTLP_HEADERS for authentication",[590,660,661],{},"Test by triggering a request and checking your OTLP backend (Grafana, Datadog, Honeycomb, etc.)",[583,663,664,665,671,672],{},"Adapter docs: ",[666,667,668],"a",{"href":668,"rel":669},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp",[670],"nofollow","\nFramework setup: ",[666,673,674],{"href":674,"rel":675},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[670],[677,678,20],"h2",{"id":679},"installation",[583,681,682],{},"The OTLP adapter comes bundled with evlog:",[684,685,691],"pre",{"className":686,"code":687,"filename":688,"language":689,"meta":690,"style":690},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createOTLPDrain } from 'evlog\u002Fotlp'\n","src\u002Findex.ts","typescript","",[692,693,694],"code",{"__ignoreMap":690},[695,696,699,703,707,711,714,717,720,724],"span",{"class":697,"line":698},"line",1,[695,700,702],{"class":701},"s7zQu","import",[695,704,706],{"class":705},"sMK4o"," {",[695,708,710],{"class":709},"sTEyZ"," createOTLPDrain",[695,712,713],{"class":705}," }",[695,715,716],{"class":701}," from",[695,718,719],{"class":705}," '",[695,721,723],{"class":722},"sfazB","evlog\u002Fotlp",[695,725,726],{"class":705},"'\n",[677,728,25],{"id":729},"quick-start",[731,732,734],"h3",{"id":733},"_1-set-your-otlp-endpoint","1. Set your OTLP endpoint",[684,736,741],{"className":737,"code":738,"filename":739,"language":740,"meta":690,"style":690},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","OTLP_ENDPOINT=http:\u002F\u002Flocalhost:4318\n",".env","bash",[692,742,743],{"__ignoreMap":690},[695,744,745,748,751],{"class":697,"line":698},[695,746,747],{"class":709},"OTLP_ENDPOINT",[695,749,750],{"class":705},"=",[695,752,753],{"class":722},"http:\u002F\u002Flocalhost:4318\n",[731,755,757],{"id":756},"_2-wire-the-drain-to-your-framework","2. Wire the drain to your framework",[759,760,761,876,1007,1069,1123,1182,1236,1289],"code-group",{},[684,762,765],{"className":686,"code":763,"filename":764,"language":689,"meta":690,"style":690},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nimport { createOTLPDrain } from 'evlog\u002Fotlp'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createOTLPDrain())\n})\n","Nuxt \u002F Nitro",[692,766,767,773,792,799,831,867],{"__ignoreMap":690},[695,768,769],{"class":697,"line":698},[695,770,772],{"class":771},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[695,774,776,778,780,782,784,786,788,790],{"class":697,"line":775},2,[695,777,702],{"class":701},[695,779,706],{"class":705},[695,781,710],{"class":709},[695,783,713],{"class":705},[695,785,716],{"class":701},[695,787,719],{"class":705},[695,789,723],{"class":722},[695,791,726],{"class":705},[695,793,795],{"class":697,"line":794},3,[695,796,798],{"emptyLinePlaceholder":797},true,"\n",[695,800,802,805,808,812,815,817,821,824,828],{"class":697,"line":801},4,[695,803,804],{"class":701},"export",[695,806,807],{"class":701}," default",[695,809,811],{"class":810},"s2Zo4"," defineNitroPlugin",[695,813,814],{"class":709},"(",[695,816,814],{"class":705},[695,818,820],{"class":819},"sHdIc","nitroApp",[695,822,823],{"class":705},")",[695,825,827],{"class":826},"spNyl"," =>",[695,829,830],{"class":705}," {\n",[695,832,834,837,840,843,845,848,851,854,857,859,862,864],{"class":697,"line":833},5,[695,835,836],{"class":709},"  nitroApp",[695,838,839],{"class":705},".",[695,841,842],{"class":709},"hooks",[695,844,839],{"class":705},[695,846,847],{"class":810},"hook",[695,849,814],{"class":850},"swJcz",[695,852,853],{"class":705},"'",[695,855,856],{"class":722},"evlog:drain",[695,858,853],{"class":705},[695,860,861],{"class":705},",",[695,863,710],{"class":810},[695,865,866],{"class":850},"())\n",[695,868,870,873],{"class":697,"line":869},6,[695,871,872],{"class":705},"}",[695,874,875],{"class":709},")\n",[684,877,879],{"className":686,"code":878,"filename":245,"language":689,"meta":690,"style":690},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createOTLPDrain } from 'evlog\u002Fotlp'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: createOTLPDrain(),\n})\n",[692,880,881,886,906,924,928,967,985,1000],{"__ignoreMap":690},[695,882,883],{"class":697,"line":698},[695,884,885],{"class":771},"\u002F\u002F lib\u002Fevlog.ts\n",[695,887,888,890,892,895,897,899,901,904],{"class":697,"line":775},[695,889,702],{"class":701},[695,891,706],{"class":705},[695,893,894],{"class":709}," createEvlog",[695,896,713],{"class":705},[695,898,716],{"class":701},[695,900,719],{"class":705},[695,902,903],{"class":722},"evlog\u002Fnext",[695,905,726],{"class":705},[695,907,908,910,912,914,916,918,920,922],{"class":697,"line":794},[695,909,702],{"class":701},[695,911,706],{"class":705},[695,913,710],{"class":709},[695,915,713],{"class":705},[695,917,716],{"class":701},[695,919,719],{"class":705},[695,921,723],{"class":722},[695,923,726],{"class":705},[695,925,926],{"class":697,"line":801},[695,927,798],{"emptyLinePlaceholder":797},[695,929,930,932,935,937,940,942,945,947,950,952,955,957,960,962,964],{"class":697,"line":833},[695,931,804],{"class":701},[695,933,934],{"class":826}," const",[695,936,706],{"class":705},[695,938,939],{"class":709}," withEvlog",[695,941,861],{"class":705},[695,943,944],{"class":709}," useLogger",[695,946,861],{"class":705},[695,948,949],{"class":709}," log",[695,951,861],{"class":705},[695,953,954],{"class":709}," createError ",[695,956,872],{"class":705},[695,958,959],{"class":705}," =",[695,961,894],{"class":810},[695,963,814],{"class":709},[695,965,966],{"class":705},"{\n",[695,968,969,972,975,977,980,982],{"class":697,"line":869},[695,970,971],{"class":850},"  service",[695,973,974],{"class":705},":",[695,976,719],{"class":705},[695,978,979],{"class":722},"my-app",[695,981,853],{"class":705},[695,983,984],{"class":705},",\n",[695,986,988,991,993,995,998],{"class":697,"line":987},7,[695,989,990],{"class":850},"  drain",[695,992,974],{"class":705},[695,994,710],{"class":810},[695,996,997],{"class":709},"()",[695,999,984],{"class":705},[695,1001,1003,1005],{"class":697,"line":1002},8,[695,1004,872],{"class":705},[695,1006,875],{"class":709},[684,1008,1010],{"className":686,"code":1009,"filename":275,"language":689,"meta":690,"style":690},"import { createOTLPDrain } from 'evlog\u002Fotlp'\n\napp.use(evlog({ drain: createOTLPDrain() }))\n",[692,1011,1012,1030,1034],{"__ignoreMap":690},[695,1013,1014,1016,1018,1020,1022,1024,1026,1028],{"class":697,"line":698},[695,1015,702],{"class":701},[695,1017,706],{"class":705},[695,1019,710],{"class":709},[695,1021,713],{"class":705},[695,1023,716],{"class":701},[695,1025,719],{"class":705},[695,1027,723],{"class":722},[695,1029,726],{"class":705},[695,1031,1032],{"class":697,"line":775},[695,1033,798],{"emptyLinePlaceholder":797},[695,1035,1036,1039,1041,1044,1046,1049,1051,1054,1057,1059,1061,1064,1066],{"class":697,"line":794},[695,1037,1038],{"class":709},"app",[695,1040,839],{"class":705},[695,1042,1043],{"class":810},"use",[695,1045,814],{"class":709},[695,1047,1048],{"class":810},"evlog",[695,1050,814],{"class":709},[695,1052,1053],{"class":705},"{",[695,1055,1056],{"class":850}," drain",[695,1058,974],{"class":705},[695,1060,710],{"class":810},[695,1062,1063],{"class":709},"() ",[695,1065,872],{"class":705},[695,1067,1068],{"class":709},"))\n",[684,1070,1071],{"className":686,"code":1009,"filename":270,"language":689,"meta":690,"style":690},[692,1072,1073,1091,1095],{"__ignoreMap":690},[695,1074,1075,1077,1079,1081,1083,1085,1087,1089],{"class":697,"line":698},[695,1076,702],{"class":701},[695,1078,706],{"class":705},[695,1080,710],{"class":709},[695,1082,713],{"class":705},[695,1084,716],{"class":701},[695,1086,719],{"class":705},[695,1088,723],{"class":722},[695,1090,726],{"class":705},[695,1092,1093],{"class":697,"line":775},[695,1094,798],{"emptyLinePlaceholder":797},[695,1096,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121],{"class":697,"line":794},[695,1098,1038],{"class":709},[695,1100,839],{"class":705},[695,1102,1043],{"class":810},[695,1104,814],{"class":709},[695,1106,1048],{"class":810},[695,1108,814],{"class":709},[695,1110,1053],{"class":705},[695,1112,1056],{"class":850},[695,1114,974],{"class":705},[695,1116,710],{"class":810},[695,1118,1063],{"class":709},[695,1120,872],{"class":705},[695,1122,1068],{"class":709},[684,1124,1126],{"className":686,"code":1125,"filename":280,"language":689,"meta":690,"style":690},"import { createOTLPDrain } from 'evlog\u002Fotlp'\n\nawait app.register(evlog, { drain: createOTLPDrain() })\n",[692,1127,1128,1146,1150],{"__ignoreMap":690},[695,1129,1130,1132,1134,1136,1138,1140,1142,1144],{"class":697,"line":698},[695,1131,702],{"class":701},[695,1133,706],{"class":705},[695,1135,710],{"class":709},[695,1137,713],{"class":705},[695,1139,716],{"class":701},[695,1141,719],{"class":705},[695,1143,723],{"class":722},[695,1145,726],{"class":705},[695,1147,1148],{"class":697,"line":775},[695,1149,798],{"emptyLinePlaceholder":797},[695,1151,1152,1155,1158,1160,1163,1166,1168,1170,1172,1174,1176,1178,1180],{"class":697,"line":794},[695,1153,1154],{"class":701},"await",[695,1156,1157],{"class":709}," app",[695,1159,839],{"class":705},[695,1161,1162],{"class":810},"register",[695,1164,1165],{"class":709},"(evlog",[695,1167,861],{"class":705},[695,1169,706],{"class":705},[695,1171,1056],{"class":850},[695,1173,974],{"class":705},[695,1175,710],{"class":810},[695,1177,1063],{"class":709},[695,1179,872],{"class":705},[695,1181,875],{"class":709},[684,1183,1184],{"className":686,"code":1009,"filename":285,"language":689,"meta":690,"style":690},[692,1185,1186,1204,1208],{"__ignoreMap":690},[695,1187,1188,1190,1192,1194,1196,1198,1200,1202],{"class":697,"line":698},[695,1189,702],{"class":701},[695,1191,706],{"class":705},[695,1193,710],{"class":709},[695,1195,713],{"class":705},[695,1197,716],{"class":701},[695,1199,719],{"class":705},[695,1201,723],{"class":722},[695,1203,726],{"class":705},[695,1205,1206],{"class":697,"line":775},[695,1207,798],{"emptyLinePlaceholder":797},[695,1209,1210,1212,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232,1234],{"class":697,"line":794},[695,1211,1038],{"class":709},[695,1213,839],{"class":705},[695,1215,1043],{"class":810},[695,1217,814],{"class":709},[695,1219,1048],{"class":810},[695,1221,814],{"class":709},[695,1223,1053],{"class":705},[695,1225,1056],{"class":850},[695,1227,974],{"class":705},[695,1229,710],{"class":810},[695,1231,1063],{"class":709},[695,1233,872],{"class":705},[695,1235,1068],{"class":709},[684,1237,1239],{"className":686,"code":1238,"filename":265,"language":689,"meta":690,"style":690},"import { createOTLPDrain } from 'evlog\u002Fotlp'\n\nEvlogModule.forRoot({ drain: createOTLPDrain() })\n",[692,1240,1241,1259,1263],{"__ignoreMap":690},[695,1242,1243,1245,1247,1249,1251,1253,1255,1257],{"class":697,"line":698},[695,1244,702],{"class":701},[695,1246,706],{"class":705},[695,1248,710],{"class":709},[695,1250,713],{"class":705},[695,1252,716],{"class":701},[695,1254,719],{"class":705},[695,1256,723],{"class":722},[695,1258,726],{"class":705},[695,1260,1261],{"class":697,"line":775},[695,1262,798],{"emptyLinePlaceholder":797},[695,1264,1265,1268,1270,1273,1275,1277,1279,1281,1283,1285,1287],{"class":697,"line":794},[695,1266,1267],{"class":709},"EvlogModule",[695,1269,839],{"class":705},[695,1271,1272],{"class":810},"forRoot",[695,1274,814],{"class":709},[695,1276,1053],{"class":705},[695,1278,1056],{"class":850},[695,1280,974],{"class":705},[695,1282,710],{"class":810},[695,1284,1063],{"class":709},[695,1286,872],{"class":705},[695,1288,875],{"class":709},[684,1290,1292],{"className":686,"code":1291,"filename":300,"language":689,"meta":690,"style":690},"import { createOTLPDrain } from 'evlog\u002Fotlp'\n\ninitLogger({ drain: createOTLPDrain() })\n",[692,1293,1294,1312,1316],{"__ignoreMap":690},[695,1295,1296,1298,1300,1302,1304,1306,1308,1310],{"class":697,"line":698},[695,1297,702],{"class":701},[695,1299,706],{"class":705},[695,1301,710],{"class":709},[695,1303,713],{"class":705},[695,1305,716],{"class":701},[695,1307,719],{"class":705},[695,1309,723],{"class":722},[695,1311,726],{"class":705},[695,1313,1314],{"class":697,"line":775},[695,1315,798],{"emptyLinePlaceholder":797},[695,1317,1318,1321,1323,1325,1327,1329,1331,1333,1335],{"class":697,"line":794},[695,1319,1320],{"class":810},"initLogger",[695,1322,814],{"class":709},[695,1324,1053],{"class":705},[695,1326,1056],{"class":850},[695,1328,974],{"class":705},[695,1330,710],{"class":810},[695,1332,1063],{"class":709},[695,1334,872],{"class":705},[695,1336,875],{"class":709},[677,1338,521],{"id":1339},"configuration",[583,1341,1342],{},"The adapter reads configuration from multiple sources (highest priority first):",[639,1344,1345,1354,1364],{},[590,1346,1347,1350,1351],{},[593,1348,1349],{},"Overrides"," passed to ",[692,1352,1353],{},"createOTLPDrain()",[590,1355,1356,1359,1360,1363],{},[593,1357,1358],{},"Runtime config"," at ",[692,1361,1362],{},"runtimeConfig.otlp"," (Nuxt\u002FNitro only)",[590,1365,1366],{},[593,1367,1368],{},"Environment variables",[731,1370,1372],{"id":1371},"environment-variables","Environment Variables",[1374,1375,1376,1389],"table",{},[1377,1378,1379],"thead",{},[1380,1381,1382,1386],"tr",{},[1383,1384,1385],"th",{},"Variable",[1383,1387,1388],{},"Description",[1390,1391,1392,1410,1427],"tbody",{},[1380,1393,1394,1399],{},[1395,1396,1397],"td",{},[692,1398,747],{},[1395,1400,1401,1402,1405,1406,1409],{},"OTLP HTTP endpoint (e.g., ",[692,1403,1404],{},"http:\u002F\u002Flocalhost:4318","). The standard ",[692,1407,1408],{},"OTEL_EXPORTER_OTLP_ENDPOINT"," also works.",[1380,1411,1412,1417],{},[1395,1413,1414],{},[692,1415,1416],{},"OTLP_HEADERS",[1395,1418,1419,1420,1423,1424,1409],{},"Headers as ",[692,1421,1422],{},"key=value"," pairs, comma-separated. The standard ",[692,1425,1426],{},"OTEL_EXPORTER_OTLP_HEADERS",[1380,1428,1429,1434],{},[1395,1430,1431],{},[692,1432,1433],{},"OTEL_SERVICE_NAME",[1395,1435,1436],{},"Service name override",[731,1438,1440],{"id":1439},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[684,1442,1445],{"className":686,"code":1443,"filename":1444,"language":689,"meta":690,"style":690},"export default defineNuxtConfig({\n  runtimeConfig: {\n    otlp: {\n      endpoint: '', \u002F\u002F Set via OTLP_ENDPOINT (or OTEL_EXPORTER_OTLP_ENDPOINT)\n    },\n  },\n})\n","nuxt.config.ts",[692,1446,1447,1460,1469,1478,1493,1498,1503],{"__ignoreMap":690},[695,1448,1449,1451,1453,1456,1458],{"class":697,"line":698},[695,1450,804],{"class":701},[695,1452,807],{"class":701},[695,1454,1455],{"class":810}," defineNuxtConfig",[695,1457,814],{"class":709},[695,1459,966],{"class":705},[695,1461,1462,1465,1467],{"class":697,"line":775},[695,1463,1464],{"class":850},"  runtimeConfig",[695,1466,974],{"class":705},[695,1468,830],{"class":705},[695,1470,1471,1474,1476],{"class":697,"line":794},[695,1472,1473],{"class":850},"    otlp",[695,1475,974],{"class":705},[695,1477,830],{"class":705},[695,1479,1480,1483,1485,1488,1490],{"class":697,"line":801},[695,1481,1482],{"class":850},"      endpoint",[695,1484,974],{"class":705},[695,1486,1487],{"class":705}," ''",[695,1489,861],{"class":705},[695,1491,1492],{"class":771}," \u002F\u002F Set via OTLP_ENDPOINT (or OTEL_EXPORTER_OTLP_ENDPOINT)\n",[695,1494,1495],{"class":697,"line":833},[695,1496,1497],{"class":705},"    },\n",[695,1499,1500],{"class":697,"line":869},[695,1501,1502],{"class":705},"  },\n",[695,1504,1505,1507],{"class":697,"line":987},[695,1506,872],{"class":705},[695,1508,875],{"class":709},[731,1510,1512],{"id":1511},"override-options","Override Options",[684,1514,1517],{"className":686,"code":1515,"filename":1516,"language":689,"meta":690,"style":690},"const drain = createOTLPDrain({\n  endpoint: 'http:\u002F\u002Flocalhost:4318',\n  serviceName: 'my-api',\n  headers: {\n    'Authorization': 'Bearer xxx',\n  },\n  resourceAttributes: {\n    'deployment.environment': 'staging',\n  },\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[692,1518,1519,1535,1550,1566,1575,1596,1600,1609,1629,1634],{"__ignoreMap":690},[695,1520,1521,1524,1527,1529,1531,1533],{"class":697,"line":698},[695,1522,1523],{"class":826},"const",[695,1525,1526],{"class":709}," drain ",[695,1528,750],{"class":705},[695,1530,710],{"class":810},[695,1532,814],{"class":709},[695,1534,966],{"class":705},[695,1536,1537,1540,1542,1544,1546,1548],{"class":697,"line":775},[695,1538,1539],{"class":850},"  endpoint",[695,1541,974],{"class":705},[695,1543,719],{"class":705},[695,1545,1404],{"class":722},[695,1547,853],{"class":705},[695,1549,984],{"class":705},[695,1551,1552,1555,1557,1559,1562,1564],{"class":697,"line":794},[695,1553,1554],{"class":850},"  serviceName",[695,1556,974],{"class":705},[695,1558,719],{"class":705},[695,1560,1561],{"class":722},"my-api",[695,1563,853],{"class":705},[695,1565,984],{"class":705},[695,1567,1568,1571,1573],{"class":697,"line":801},[695,1569,1570],{"class":850},"  headers",[695,1572,974],{"class":705},[695,1574,830],{"class":705},[695,1576,1577,1580,1583,1585,1587,1589,1592,1594],{"class":697,"line":833},[695,1578,1579],{"class":705},"    '",[695,1581,1582],{"class":850},"Authorization",[695,1584,853],{"class":705},[695,1586,974],{"class":705},[695,1588,719],{"class":705},[695,1590,1591],{"class":722},"Bearer xxx",[695,1593,853],{"class":705},[695,1595,984],{"class":705},[695,1597,1598],{"class":697,"line":869},[695,1599,1502],{"class":705},[695,1601,1602,1605,1607],{"class":697,"line":987},[695,1603,1604],{"class":850},"  resourceAttributes",[695,1606,974],{"class":705},[695,1608,830],{"class":705},[695,1610,1611,1613,1616,1618,1620,1622,1625,1627],{"class":697,"line":1002},[695,1612,1579],{"class":705},[695,1614,1615],{"class":850},"deployment.environment",[695,1617,853],{"class":705},[695,1619,974],{"class":705},[695,1621,719],{"class":705},[695,1623,1624],{"class":722},"staging",[695,1626,853],{"class":705},[695,1628,984],{"class":705},[695,1630,1632],{"class":697,"line":1631},9,[695,1633,1502],{"class":705},[695,1635,1637,1639],{"class":697,"line":1636},10,[695,1638,872],{"class":705},[695,1640,875],{"class":709},[731,1642,1644],{"id":1643},"full-configuration-reference","Full Configuration Reference",[1374,1646,1647,1662],{},[1377,1648,1649],{},[1380,1650,1651,1654,1657,1660],{},[1383,1652,1653],{},"Option",[1383,1655,1656],{},"Type",[1383,1658,1659],{},"Default",[1383,1661,1388],{},[1390,1663,1664,1682,1703,1720,1736,1760],{},[1380,1665,1666,1671,1676,1679],{},[1395,1667,1668],{},[692,1669,1670],{},"endpoint",[1395,1672,1673],{},[692,1674,1675],{},"string",[1395,1677,1678],{},"-",[1395,1680,1681],{},"OTLP HTTP endpoint (required)",[1380,1683,1684,1689,1693,1696],{},[1395,1685,1686],{},[692,1687,1688],{},"serviceName",[1395,1690,1691],{},[692,1692,1675],{},[1395,1694,1695],{},"From event",[1395,1697,1698,1699,1702],{},"Override ",[692,1700,1701],{},"service.name"," resource attribute",[1380,1704,1705,1710,1715,1717],{},[1395,1706,1707],{},[692,1708,1709],{},"headers",[1395,1711,1712],{},[692,1713,1714],{},"object",[1395,1716,1678],{},[1395,1718,1719],{},"Custom HTTP headers for authentication",[1380,1721,1722,1727,1731,1733],{},[1395,1723,1724],{},[692,1725,1726],{},"resourceAttributes",[1395,1728,1729],{},[692,1730,1714],{},[1395,1732,1678],{},[1395,1734,1735],{},"Additional OTLP resource attributes",[1380,1737,1738,1743,1748,1753],{},[1395,1739,1740],{},[692,1741,1742],{},"recordShape",[1395,1744,1745],{},[692,1746,1747],{},"'json' | 'compact'",[1395,1749,1750],{},[692,1751,1752],{},"'json'",[1395,1754,1755,1756,823],{},"How the record carries the event (",[666,1757,1759],{"href":1758},"#record-shape","details",[1380,1761,1762,1767,1772,1777],{},[1395,1763,1764],{},[692,1765,1766],{},"timeout",[1395,1768,1769],{},[692,1770,1771],{},"number",[1395,1773,1774],{},[692,1775,1776],{},"5000",[1395,1778,1779],{},"Request timeout in milliseconds",[677,1781,1783],{"id":1782},"deployment","Deployment",[583,1785,1786],{},"OTLP is a protocol, not a product. The same adapter talks to a collector you\nrun yourself and to a managed gateway. Only the endpoint and headers change.",[731,1788,1790],{"id":1789},"self-hosted","Self-hosted",[583,1792,1793],{},"Run an OpenTelemetry Collector and point evlog at it. Nothing else to configure:",[684,1795,1800],{"className":1796,"code":1797,"filename":1798,"language":1799,"meta":690,"style":690},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","receivers:\n  otlp:\n    protocols:\n      http:\n        endpoint: 0.0.0.0:4318\n\nexporters:\n  debug:\n    verbosity: detailed\n\nservice:\n  pipelines:\n    logs:\n      receivers: [otlp]\n      exporters: [debug]\n","otel-collector.yaml","yaml",[692,1801,1802,1810,1817,1824,1831,1841,1845,1852,1859,1869,1873,1881,1889,1897,1914],{"__ignoreMap":690},[695,1803,1804,1807],{"class":697,"line":698},[695,1805,1806],{"class":850},"receivers",[695,1808,1809],{"class":705},":\n",[695,1811,1812,1815],{"class":697,"line":775},[695,1813,1814],{"class":850},"  otlp",[695,1816,1809],{"class":705},[695,1818,1819,1822],{"class":697,"line":794},[695,1820,1821],{"class":850},"    protocols",[695,1823,1809],{"class":705},[695,1825,1826,1829],{"class":697,"line":801},[695,1827,1828],{"class":850},"      http",[695,1830,1809],{"class":705},[695,1832,1833,1836,1838],{"class":697,"line":833},[695,1834,1835],{"class":850},"        endpoint",[695,1837,974],{"class":705},[695,1839,1840],{"class":722}," 0.0.0.0:4318\n",[695,1842,1843],{"class":697,"line":869},[695,1844,798],{"emptyLinePlaceholder":797},[695,1846,1847,1850],{"class":697,"line":987},[695,1848,1849],{"class":850},"exporters",[695,1851,1809],{"class":705},[695,1853,1854,1857],{"class":697,"line":1002},[695,1855,1856],{"class":850},"  debug",[695,1858,1809],{"class":705},[695,1860,1861,1864,1866],{"class":697,"line":1631},[695,1862,1863],{"class":850},"    verbosity",[695,1865,974],{"class":705},[695,1867,1868],{"class":722}," detailed\n",[695,1870,1871],{"class":697,"line":1636},[695,1872,798],{"emptyLinePlaceholder":797},[695,1874,1876,1879],{"class":697,"line":1875},11,[695,1877,1878],{"class":850},"service",[695,1880,1809],{"class":705},[695,1882,1884,1887],{"class":697,"line":1883},12,[695,1885,1886],{"class":850},"  pipelines",[695,1888,1809],{"class":705},[695,1890,1892,1895],{"class":697,"line":1891},13,[695,1893,1894],{"class":850},"    logs",[695,1896,1809],{"class":705},[695,1898,1900,1903,1905,1908,1911],{"class":697,"line":1899},14,[695,1901,1902],{"class":850},"      receivers",[695,1904,974],{"class":705},[695,1906,1907],{"class":705}," [",[695,1909,1910],{"class":722},"otlp",[695,1912,1913],{"class":705},"]\n",[695,1915,1917,1920,1922,1924,1927],{"class":697,"line":1916},15,[695,1918,1919],{"class":850},"      exporters",[695,1921,974],{"class":705},[695,1923,1907],{"class":705},[695,1925,1926],{"class":722},"debug",[695,1928,1913],{"class":705},[684,1930,1933],{"className":737,"code":1931,"filename":1932,"language":740,"meta":690,"style":690},"docker run --rm -p 4318:4318 \\\n  -v $(pwd)\u002Fotel-collector.yaml:\u002Fetc\u002Fotelcol\u002Fconfig.yaml \\\n  otel\u002Fopentelemetry-collector:latest\n","Terminal",[692,1934,1935,1956,1974],{"__ignoreMap":690},[695,1936,1937,1941,1944,1947,1950,1953],{"class":697,"line":698},[695,1938,1940],{"class":1939},"sBMFI","docker",[695,1942,1943],{"class":722}," run",[695,1945,1946],{"class":722}," --rm",[695,1948,1949],{"class":722}," -p",[695,1951,1952],{"class":722}," 4318:4318",[695,1954,1955],{"class":709}," \\\n",[695,1957,1958,1961,1964,1967,1969,1972],{"class":697,"line":775},[695,1959,1960],{"class":722},"  -v",[695,1962,1963],{"class":705}," $(",[695,1965,1966],{"class":810},"pwd",[695,1968,823],{"class":705},[695,1970,1971],{"class":722},"\u002Fotel-collector.yaml:\u002Fetc\u002Fotelcol\u002Fconfig.yaml",[695,1973,1955],{"class":709},[695,1975,1976],{"class":697,"line":794},[695,1977,1978],{"class":722},"  otel\u002Fopentelemetry-collector:latest\n",[684,1980,1981],{"className":737,"code":738,"filename":739,"language":740,"meta":690,"style":690},[692,1982,1983],{"__ignoreMap":690},[695,1984,1985,1987,1989],{"class":697,"line":698},[695,1986,747],{"class":709},[695,1988,750],{"class":705},[695,1990,753],{"class":722},[583,1992,1993],{},"From there the collector fans out wherever you want: Loki, ClickHouse,\nElasticsearch, a managed backend, or several at once. That indirection is the\nreason to pick OTLP over a direct adapter.",[731,1995,1997],{"id":1996},"managed-gateways","Managed gateways",[583,1999,2000],{},"Same adapter, a credentialed endpoint:",[759,2002,2003,2030,2058],{},[684,2004,2006],{"className":737,"code":2005,"filename":595,"language":740,"meta":690,"style":690},"OTLP_ENDPOINT=https:\u002F\u002Fotlp-gateway-prod-us-central-0.grafana.net\u002Fotlp\nOTEL_EXPORTER_OTLP_HEADERS=Authorization=Basic%20base64-encoded-credentials\n",[692,2007,2008,2017],{"__ignoreMap":690},[695,2009,2010,2012,2014],{"class":697,"line":698},[695,2011,747],{"class":709},[695,2013,750],{"class":705},[695,2015,2016],{"class":722},"https:\u002F\u002Fotlp-gateway-prod-us-central-0.grafana.net\u002Fotlp\n",[695,2018,2019,2021,2023,2025,2027],{"class":697,"line":775},[695,2020,1426],{"class":709},[695,2022,750],{"class":705},[695,2024,1582],{"class":709},[695,2026,750],{"class":705},[695,2028,2029],{"class":722},"Basic%20base64-encoded-credentials\n",[684,2031,2033],{"className":737,"code":2032,"filename":181,"language":740,"meta":690,"style":690},"OTLP_ENDPOINT=https:\u002F\u002Fhttp-intake.logs.datadoghq.com\nOTLP_HEADERS=DD-API-KEY=your-api-key\n",[692,2034,2035,2044],{"__ignoreMap":690},[695,2036,2037,2039,2041],{"class":697,"line":698},[695,2038,747],{"class":709},[695,2040,750],{"class":705},[695,2042,2043],{"class":722},"https:\u002F\u002Fhttp-intake.logs.datadoghq.com\n",[695,2045,2046,2048,2050,2053,2055],{"class":697,"line":775},[695,2047,1416],{"class":709},[695,2049,750],{"class":705},[695,2051,2052],{"class":709},"DD-API-KEY",[695,2054,750],{"class":705},[695,2056,2057],{"class":722},"your-api-key\n",[684,2059,2061],{"className":737,"code":2060,"filename":605,"language":740,"meta":690,"style":690},"OTLP_ENDPOINT=https:\u002F\u002Fapi.honeycomb.io\nOTLP_HEADERS=x-honeycomb-team=your-api-key\n",[692,2062,2063,2072],{"__ignoreMap":690},[695,2064,2065,2067,2069],{"class":697,"line":698},[695,2066,747],{"class":709},[695,2068,750],{"class":705},[695,2070,2071],{"class":722},"https:\u002F\u002Fapi.honeycomb.io\n",[695,2073,2074,2076,2078,2081,2083],{"class":697,"line":775},[695,2075,1416],{"class":709},[695,2077,750],{"class":705},[695,2079,2080],{"class":709},"x-honeycomb-team",[695,2082,750],{"class":705},[695,2084,2057],{"class":722},[2086,2087,2089,2090,2093],"callout",{"color":2088,"icon":13},"info","Grafana Cloud uses URL-encoded headers, so the ",[692,2091,2092],{},"%20"," is a space. The adapter\ndecodes that format automatically.",[677,2095,2097],{"id":2096},"otlp-log-format","OTLP Log Format",[583,2099,2100],{},"evlog maps wide events to the OTLP log format:",[1374,2102,2103,2113],{},[1377,2104,2105],{},[1380,2106,2107,2110],{},[1383,2108,2109],{},"evlog Field",[1383,2111,2112],{},"OTLP Field",[1390,2114,2115,2131,2143,2154,2165,2177,2189,2200,2211],{},[1380,2116,2117,2122],{},[1395,2118,2119],{},[692,2120,2121],{},"level",[1395,2123,2124,2127,2128],{},[692,2125,2126],{},"severityNumber"," \u002F ",[692,2129,2130],{},"severityText",[1380,2132,2133,2138],{},[1395,2134,2135],{},[692,2136,2137],{},"timestamp",[1395,2139,2140],{},[692,2141,2142],{},"timeUnixNano",[1380,2144,2145,2149],{},[1395,2146,2147],{},[692,2148,1878],{},[1395,2150,2151,2152],{},"Resource attribute ",[692,2153,1701],{},[1380,2155,2156,2161],{},[1395,2157,2158],{},[692,2159,2160],{},"environment",[1395,2162,2151,2163],{},[692,2164,1615],{},[1380,2166,2167,2172],{},[1395,2168,2169],{},[692,2170,2171],{},"version",[1395,2173,2151,2174],{},[692,2175,2176],{},"service.version",[1380,2178,2179,2184],{},[1395,2180,2181],{},[692,2182,2183],{},"region",[1395,2185,2151,2186],{},[692,2187,2188],{},"cloud.region",[1380,2190,2191,2196],{},[1395,2192,2193],{},[692,2194,2195],{},"traceId",[1395,2197,2198],{},[692,2199,2195],{},[1380,2201,2202,2207],{},[1395,2203,2204],{},[692,2205,2206],{},"spanId",[1395,2208,2209],{},[692,2210,2206],{},[1380,2212,2213,2216],{},[1395,2214,2215],{},"All other fields",[1395,2217,2218],{},"Log attributes",[583,2220,2221,2222,2225,2226,2229,2230,2233,2234,2237,2238,2241,2242,2245],{},"Every field of the wide event is sent as an OTLP record field, a resource attribute, or a log attribute. ",[692,2223,2224],{},"null"," and ",[692,2227,2228],{},"undefined"," are omitted rather than transmitted. ",[692,2231,2232],{},"json"," drops them at the top level, ",[692,2235,2236],{},"compact"," at every level, so a nested ",[692,2239,2240],{},"{ user: { id: null } }"," has no ",[692,2243,2244],{},"user.id"," attribute.",[731,2247,2249],{"id":2248},"record-shape","Record Shape",[583,2251,2252,2254,2255,839],{},[692,2253,1742],{}," controls how the record carries the event. The default is ",[692,2256,2232],{},[759,2258,2259,2528],{},[684,2260,2264],{"className":2261,"code":2262,"filename":2263,"language":2232,"meta":690,"style":690},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"body\": { \"stringValue\": \"{\\\"timestamp\\\":\\\"…\\\",\\\"method\\\":\\\"POST\\\",\\\"user\\\":{\\\"id\\\":\\\"usr_123\\\"}}\" },\n  \"attributes\": [\n    { \"key\": \"method\", \"value\": { \"stringValue\": \"POST\" } },\n    { \"key\": \"user\", \"value\": { \"stringValue\": \"{\\\"id\\\":\\\"usr_123\\\",\\\"plan\\\":\\\"premium\\\"}\" } }\n  ]\n}\n","json (default)",[692,2265,2266,2270,2369,2383,2435,2518,2523],{"__ignoreMap":690},[695,2267,2268],{"class":697,"line":698},[695,2269,966],{"class":705},[695,2271,2272,2275,2278,2281,2283,2285,2288,2291,2293,2295,2297,2299,2302,2304,2306,2308,2310,2313,2315,2317,2319,2322,2324,2326,2328,2331,2333,2335,2337,2340,2342,2345,2347,2350,2352,2354,2356,2359,2361,2364,2366],{"class":697,"line":775},[695,2273,2274],{"class":705},"  \"",[695,2276,2277],{"class":826},"body",[695,2279,2280],{"class":705},"\"",[695,2282,974],{"class":705},[695,2284,706],{"class":705},[695,2286,2287],{"class":705}," \"",[695,2289,2290],{"class":1939},"stringValue",[695,2292,2280],{"class":705},[695,2294,974],{"class":705},[695,2296,2287],{"class":705},[695,2298,1053],{"class":722},[695,2300,2301],{"class":709},"\\\"",[695,2303,2137],{"class":722},[695,2305,2301],{"class":709},[695,2307,974],{"class":722},[695,2309,2301],{"class":709},[695,2311,2312],{"class":722},"…",[695,2314,2301],{"class":709},[695,2316,861],{"class":722},[695,2318,2301],{"class":709},[695,2320,2321],{"class":722},"method",[695,2323,2301],{"class":709},[695,2325,974],{"class":722},[695,2327,2301],{"class":709},[695,2329,2330],{"class":722},"POST",[695,2332,2301],{"class":709},[695,2334,861],{"class":722},[695,2336,2301],{"class":709},[695,2338,2339],{"class":722},"user",[695,2341,2301],{"class":709},[695,2343,2344],{"class":722},":{",[695,2346,2301],{"class":709},[695,2348,2349],{"class":722},"id",[695,2351,2301],{"class":709},[695,2353,974],{"class":722},[695,2355,2301],{"class":709},[695,2357,2358],{"class":722},"usr_123",[695,2360,2301],{"class":709},[695,2362,2363],{"class":722},"}}",[695,2365,2280],{"class":705},[695,2367,2368],{"class":705}," },\n",[695,2370,2371,2373,2376,2378,2380],{"class":697,"line":794},[695,2372,2274],{"class":705},[695,2374,2375],{"class":826},"attributes",[695,2377,2280],{"class":705},[695,2379,974],{"class":705},[695,2381,2382],{"class":705}," [\n",[695,2384,2385,2388,2390,2393,2395,2397,2399,2401,2403,2405,2407,2410,2412,2414,2416,2418,2421,2423,2425,2427,2429,2431,2433],{"class":697,"line":801},[695,2386,2387],{"class":705},"    {",[695,2389,2287],{"class":705},[695,2391,2392],{"class":1939},"key",[695,2394,2280],{"class":705},[695,2396,974],{"class":705},[695,2398,2287],{"class":705},[695,2400,2321],{"class":722},[695,2402,2280],{"class":705},[695,2404,861],{"class":705},[695,2406,2287],{"class":705},[695,2408,2409],{"class":1939},"value",[695,2411,2280],{"class":705},[695,2413,974],{"class":705},[695,2415,706],{"class":705},[695,2417,2287],{"class":705},[695,2419,2290],{"class":2420},"sbssI",[695,2422,2280],{"class":705},[695,2424,974],{"class":705},[695,2426,2287],{"class":705},[695,2428,2330],{"class":722},[695,2430,2280],{"class":705},[695,2432,713],{"class":705},[695,2434,2368],{"class":705},[695,2436,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2498,2500,2502,2504,2507,2509,2511,2513,2515],{"class":697,"line":833},[695,2438,2387],{"class":705},[695,2440,2287],{"class":705},[695,2442,2392],{"class":1939},[695,2444,2280],{"class":705},[695,2446,974],{"class":705},[695,2448,2287],{"class":705},[695,2450,2339],{"class":722},[695,2452,2280],{"class":705},[695,2454,861],{"class":705},[695,2456,2287],{"class":705},[695,2458,2409],{"class":1939},[695,2460,2280],{"class":705},[695,2462,974],{"class":705},[695,2464,706],{"class":705},[695,2466,2287],{"class":705},[695,2468,2290],{"class":2420},[695,2470,2280],{"class":705},[695,2472,974],{"class":705},[695,2474,2287],{"class":705},[695,2476,1053],{"class":722},[695,2478,2301],{"class":709},[695,2480,2349],{"class":722},[695,2482,2301],{"class":709},[695,2484,974],{"class":722},[695,2486,2301],{"class":709},[695,2488,2358],{"class":722},[695,2490,2301],{"class":709},[695,2492,861],{"class":722},[695,2494,2301],{"class":709},[695,2496,2497],{"class":722},"plan",[695,2499,2301],{"class":709},[695,2501,974],{"class":722},[695,2503,2301],{"class":709},[695,2505,2506],{"class":722},"premium",[695,2508,2301],{"class":709},[695,2510,872],{"class":722},[695,2512,2280],{"class":705},[695,2514,713],{"class":705},[695,2516,2517],{"class":705}," }\n",[695,2519,2520],{"class":697,"line":869},[695,2521,2522],{"class":705},"  ]\n",[695,2524,2525],{"class":697,"line":987},[695,2526,2527],{"class":705},"}\n",[684,2529,2531],{"className":2261,"code":2530,"filename":2236,"language":2232,"meta":690,"style":690},"{\n  \"body\": { \"stringValue\": \"POST \u002Fapi\u002Fcheckout (500)\" },\n  \"attributes\": [\n    { \"key\": \"method\", \"value\": { \"stringValue\": \"POST\" } },\n    { \"key\": \"user.id\", \"value\": { \"stringValue\": \"usr_123\" } },\n    { \"key\": \"user.plan\", \"value\": { \"stringValue\": \"premium\" } }\n  ]\n}\n",[692,2532,2533,2537,2566,2578,2626,2674,2723,2727],{"__ignoreMap":690},[695,2534,2535],{"class":697,"line":698},[695,2536,966],{"class":705},[695,2538,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2562,2564],{"class":697,"line":775},[695,2540,2274],{"class":705},[695,2542,2277],{"class":826},[695,2544,2280],{"class":705},[695,2546,974],{"class":705},[695,2548,706],{"class":705},[695,2550,2287],{"class":705},[695,2552,2290],{"class":1939},[695,2554,2280],{"class":705},[695,2556,974],{"class":705},[695,2558,2287],{"class":705},[695,2560,2561],{"class":722},"POST \u002Fapi\u002Fcheckout (500)",[695,2563,2280],{"class":705},[695,2565,2368],{"class":705},[695,2567,2568,2570,2572,2574,2576],{"class":697,"line":794},[695,2569,2274],{"class":705},[695,2571,2375],{"class":826},[695,2573,2280],{"class":705},[695,2575,974],{"class":705},[695,2577,2382],{"class":705},[695,2579,2580,2582,2584,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620,2622,2624],{"class":697,"line":801},[695,2581,2387],{"class":705},[695,2583,2287],{"class":705},[695,2585,2392],{"class":1939},[695,2587,2280],{"class":705},[695,2589,974],{"class":705},[695,2591,2287],{"class":705},[695,2593,2321],{"class":722},[695,2595,2280],{"class":705},[695,2597,861],{"class":705},[695,2599,2287],{"class":705},[695,2601,2409],{"class":1939},[695,2603,2280],{"class":705},[695,2605,974],{"class":705},[695,2607,706],{"class":705},[695,2609,2287],{"class":705},[695,2611,2290],{"class":2420},[695,2613,2280],{"class":705},[695,2615,974],{"class":705},[695,2617,2287],{"class":705},[695,2619,2330],{"class":722},[695,2621,2280],{"class":705},[695,2623,713],{"class":705},[695,2625,2368],{"class":705},[695,2627,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650,2652,2654,2656,2658,2660,2662,2664,2666,2668,2670,2672],{"class":697,"line":833},[695,2629,2387],{"class":705},[695,2631,2287],{"class":705},[695,2633,2392],{"class":1939},[695,2635,2280],{"class":705},[695,2637,974],{"class":705},[695,2639,2287],{"class":705},[695,2641,2244],{"class":722},[695,2643,2280],{"class":705},[695,2645,861],{"class":705},[695,2647,2287],{"class":705},[695,2649,2409],{"class":1939},[695,2651,2280],{"class":705},[695,2653,974],{"class":705},[695,2655,706],{"class":705},[695,2657,2287],{"class":705},[695,2659,2290],{"class":2420},[695,2661,2280],{"class":705},[695,2663,974],{"class":705},[695,2665,2287],{"class":705},[695,2667,2358],{"class":722},[695,2669,2280],{"class":705},[695,2671,713],{"class":705},[695,2673,2368],{"class":705},[695,2675,2676,2678,2680,2682,2684,2686,2688,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721],{"class":697,"line":869},[695,2677,2387],{"class":705},[695,2679,2287],{"class":705},[695,2681,2392],{"class":1939},[695,2683,2280],{"class":705},[695,2685,974],{"class":705},[695,2687,2287],{"class":705},[695,2689,2690],{"class":722},"user.plan",[695,2692,2280],{"class":705},[695,2694,861],{"class":705},[695,2696,2287],{"class":705},[695,2698,2409],{"class":1939},[695,2700,2280],{"class":705},[695,2702,974],{"class":705},[695,2704,706],{"class":705},[695,2706,2287],{"class":705},[695,2708,2290],{"class":2420},[695,2710,2280],{"class":705},[695,2712,974],{"class":705},[695,2714,2287],{"class":705},[695,2716,2506],{"class":722},[695,2718,2280],{"class":705},[695,2720,713],{"class":705},[695,2722,2517],{"class":705},[695,2724,2725],{"class":697,"line":987},[695,2726,2522],{"class":705},[695,2728,2729],{"class":697,"line":1002},[695,2730,2527],{"class":705},[583,2732,2733,2735],{},[692,2734,2236],{}," is worth switching to when your backend charges by ingested volume or facets on attributes:",[587,2737,2738,2747],{},[590,2739,2740,2743,2744,2746],{},[593,2741,2742],{},"The body is a one-line summary",": ",[692,2745,2561],{},", falling back to the service name, instead of the whole event repeated next to the attributes. Backends that cluster messages into templates can only do so with a stable body.",[590,2748,2749,2752,2753],{},[593,2750,2751],{},"Nested fields become dotted attributes",", so each leaf is its own facet:",[684,2754,2757],{"className":686,"code":2755,"filename":2756,"language":689,"meta":690,"style":690},"const drain = createOTLPDrain({ recordShape: 'compact' })\n\nlog.set({ user: { id: 'usr_123', plan: 'premium' } })\n\u002F\u002F → user.id, user.plan\n","server\u002Fapi\u002Fcheckout.post.ts",[692,2758,2759,2788,2792,2843],{"__ignoreMap":690},[695,2760,2761,2763,2765,2767,2769,2771,2773,2776,2778,2780,2782,2784,2786],{"class":697,"line":698},[695,2762,1523],{"class":826},[695,2764,1526],{"class":709},[695,2766,750],{"class":705},[695,2768,710],{"class":810},[695,2770,814],{"class":709},[695,2772,1053],{"class":705},[695,2774,2775],{"class":850}," recordShape",[695,2777,974],{"class":705},[695,2779,719],{"class":705},[695,2781,2236],{"class":722},[695,2783,853],{"class":705},[695,2785,713],{"class":705},[695,2787,875],{"class":709},[695,2789,2790],{"class":697,"line":775},[695,2791,798],{"emptyLinePlaceholder":797},[695,2793,2794,2797,2799,2802,2804,2806,2809,2811,2813,2816,2818,2820,2822,2824,2826,2829,2831,2833,2835,2837,2839,2841],{"class":697,"line":794},[695,2795,2796],{"class":709},"log",[695,2798,839],{"class":705},[695,2800,2801],{"class":810},"set",[695,2803,814],{"class":709},[695,2805,1053],{"class":705},[695,2807,2808],{"class":850}," user",[695,2810,974],{"class":705},[695,2812,706],{"class":705},[695,2814,2815],{"class":850}," id",[695,2817,974],{"class":705},[695,2819,719],{"class":705},[695,2821,2358],{"class":722},[695,2823,853],{"class":705},[695,2825,861],{"class":705},[695,2827,2828],{"class":850}," plan",[695,2830,974],{"class":705},[695,2832,719],{"class":705},[695,2834,2506],{"class":722},[695,2836,853],{"class":705},[695,2838,713],{"class":705},[695,2840,713],{"class":705},[695,2842,875],{"class":709},[695,2844,2845],{"class":697,"line":801},[695,2846,2847],{"class":771},"\u002F\u002F → user.id, user.plan\n",[583,2849,2850,2851,2854,2855,2858,2859,2862],{},"Only plain objects are walked. Arrays are serialized as a single JSON string. Indexing them, as ",[692,2852,2853],{},"ai.tools.0.name",", would turn a list into an unbounded set of distinct attribute keys, which most backends charge for and none can chart. The same goes for anything else that is not a plain object, such as a ",[692,2856,2857],{},"Date",". An empty object stays a single ",[692,2860,2861],{},"{}"," attribute rather than disappearing.",[2086,2864,2865,2867,2868,2870],{"color":2088,"icon":13},[692,2866,2236],{}," becomes the default in the next major. Switch early if you are setting a project up now. Moving later means rewriting the queries built on the ",[692,2869,2232],{}," shape.",[731,2872,2874],{"id":2873},"severity-mapping","Severity Mapping",[1374,2876,2877,2890],{},[1377,2878,2879],{},[1380,2880,2881,2884,2887],{},[1383,2882,2883],{},"evlog Level",[1383,2885,2886],{},"OTLP Severity Number",[1383,2888,2889],{},"OTLP Severity Text",[1390,2891,2892,2904,2916,2929],{},[1380,2893,2894,2898,2901],{},[1395,2895,2896],{},[692,2897,1926],{},[1395,2899,2900],{},"5",[1395,2902,2903],{},"DEBUG",[1380,2905,2906,2910,2913],{},[1395,2907,2908],{},[692,2909,2088],{},[1395,2911,2912],{},"9",[1395,2914,2915],{},"INFO",[1380,2917,2918,2923,2926],{},[1395,2919,2920],{},[692,2921,2922],{},"warn",[1395,2924,2925],{},"13",[1395,2927,2928],{},"WARN",[1380,2930,2931,2936,2939],{},[1395,2932,2933],{},[692,2934,2935],{},"error",[1395,2937,2938],{},"17",[1395,2940,2941],{},"ERROR",[677,2943,2945],{"id":2944},"troubleshooting","Troubleshooting",[731,2947,2949],{"id":2948},"missing-endpoint-error","Missing endpoint error",[684,2951,2957],{"className":2952,"code":2954,"filename":2955,"language":2956,"meta":690},[2953],"language-text","[evlog\u002Fotlp] Missing endpoint. Set OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_ENDPOINT\n","Console","text",[692,2958,2954],{"__ignoreMap":690},[583,2960,2961],{},"Make sure your endpoint environment variable is set and the server was restarted.",[731,2963,2965],{"id":2964},"_401-unauthorized","401 Unauthorized",[583,2967,2968],{},"Your authentication headers may be missing or incorrect. Check:",[639,2970,2971,2977,2980],{},[590,2972,2973,2974,2976],{},"The ",[692,2975,1426],{}," format is correct",[590,2978,2979],{},"Credentials are valid and not expired",[590,2981,2982],{},"The endpoint URL is correct",[731,2984,2986],{"id":2985},"_404-not-found","404 Not Found",[583,2988,2989,2990,2993],{},"The adapter sends to ",[692,2991,2992],{},"\u002Fv1\u002Flogs",". Make sure your endpoint:",[587,2995,2996,2999],{},[590,2997,2998],{},"Supports OTLP HTTP (not gRPC)",[590,3000,3001,3002,3004],{},"Is the base URL without ",[692,3003,2992],{}," suffix",[731,3006,3008],{"id":3007},"logs-not-appearing","Logs not appearing",[639,3010,3011,3018,3021],{},[590,3012,3013,3014,3017],{},"Check the server console for ",[692,3015,3016],{},"[evlog\u002Fotlp]"," error messages",[590,3019,3020],{},"Test with a local collector first to verify the format",[590,3022,3023],{},"Check your backend's ingestion delay (some have 1-2 minute delays)",[677,3025,3027],{"id":3026},"direct-api-usage","Direct API Usage",[583,3029,3030],{},"For advanced use cases:",[684,3032,3035],{"className":686,"code":3033,"filename":3034,"language":689,"meta":690,"style":690},"import { sendToOTLP, sendBatchToOTLP, toOTLPLogRecord } from 'evlog\u002Fotlp'\n\n\u002F\u002F Send a single event\nawait sendToOTLP(event, {\n  endpoint: 'http:\u002F\u002Flocalhost:4318',\n})\n\n\u002F\u002F Send multiple events\nawait sendBatchToOTLP(events, {\n  endpoint: 'http:\u002F\u002Flocalhost:4318',\n})\n\n\u002F\u002F Convert event to OTLP format (for inspection)\nconst otlpRecord = toOTLPLogRecord(event)\n","server\u002Futils\u002Fotlp.ts",[692,3036,3037,3066,3070,3075,3088,3102,3108,3112,3117,3130,3144,3150,3154,3159],{"__ignoreMap":690},[695,3038,3039,3041,3043,3046,3048,3051,3053,3056,3058,3060,3062,3064],{"class":697,"line":698},[695,3040,702],{"class":701},[695,3042,706],{"class":705},[695,3044,3045],{"class":709}," sendToOTLP",[695,3047,861],{"class":705},[695,3049,3050],{"class":709}," sendBatchToOTLP",[695,3052,861],{"class":705},[695,3054,3055],{"class":709}," toOTLPLogRecord",[695,3057,713],{"class":705},[695,3059,716],{"class":701},[695,3061,719],{"class":705},[695,3063,723],{"class":722},[695,3065,726],{"class":705},[695,3067,3068],{"class":697,"line":775},[695,3069,798],{"emptyLinePlaceholder":797},[695,3071,3072],{"class":697,"line":794},[695,3073,3074],{"class":771},"\u002F\u002F Send a single event\n",[695,3076,3077,3079,3081,3084,3086],{"class":697,"line":801},[695,3078,1154],{"class":701},[695,3080,3045],{"class":810},[695,3082,3083],{"class":709},"(event",[695,3085,861],{"class":705},[695,3087,830],{"class":705},[695,3089,3090,3092,3094,3096,3098,3100],{"class":697,"line":833},[695,3091,1539],{"class":850},[695,3093,974],{"class":705},[695,3095,719],{"class":705},[695,3097,1404],{"class":722},[695,3099,853],{"class":705},[695,3101,984],{"class":705},[695,3103,3104,3106],{"class":697,"line":869},[695,3105,872],{"class":705},[695,3107,875],{"class":709},[695,3109,3110],{"class":697,"line":987},[695,3111,798],{"emptyLinePlaceholder":797},[695,3113,3114],{"class":697,"line":1002},[695,3115,3116],{"class":771},"\u002F\u002F Send multiple events\n",[695,3118,3119,3121,3123,3126,3128],{"class":697,"line":1631},[695,3120,1154],{"class":701},[695,3122,3050],{"class":810},[695,3124,3125],{"class":709},"(events",[695,3127,861],{"class":705},[695,3129,830],{"class":705},[695,3131,3132,3134,3136,3138,3140,3142],{"class":697,"line":1636},[695,3133,1539],{"class":850},[695,3135,974],{"class":705},[695,3137,719],{"class":705},[695,3139,1404],{"class":722},[695,3141,853],{"class":705},[695,3143,984],{"class":705},[695,3145,3146,3148],{"class":697,"line":1875},[695,3147,872],{"class":705},[695,3149,875],{"class":709},[695,3151,3152],{"class":697,"line":1883},[695,3153,798],{"emptyLinePlaceholder":797},[695,3155,3156],{"class":697,"line":1891},[695,3157,3158],{"class":771},"\u002F\u002F Convert event to OTLP format (for inspection)\n",[695,3160,3161,3163,3166,3168,3170],{"class":697,"line":1899},[695,3162,1523],{"class":826},[695,3164,3165],{"class":709}," otlpRecord ",[695,3167,750],{"class":705},[695,3169,3055],{"class":810},[695,3171,3172],{"class":709},"(event)\n",[677,3174,3176],{"id":3175},"next-steps","Next Steps",[587,3178,3179,3185,3191,3197],{},[590,3180,3181,3184],{},[666,3182,3183],{"href":162},"Axiom Adapter"," - Send logs to Axiom",[590,3186,3187,3190],{},[666,3188,3189],{"href":167},"PostHog Adapter"," - Send logs to PostHog",[590,3192,3193,3196],{},[666,3194,3195],{"href":504},"Custom Adapters"," - Build your own adapter",[590,3198,3199,3201],{},[666,3200,534],{"href":535}," - Security and production tips",[3203,3204,3205],"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":690,"searchDepth":775,"depth":775,"links":3207},[3208,3209,3213,3219,3223,3227,3233,3234],{"id":679,"depth":775,"text":20},{"id":729,"depth":775,"text":25,"children":3210},[3211,3212],{"id":733,"depth":794,"text":734},{"id":756,"depth":794,"text":757},{"id":1339,"depth":775,"text":521,"children":3214},[3215,3216,3217,3218],{"id":1371,"depth":794,"text":1372},{"id":1439,"depth":794,"text":1440},{"id":1511,"depth":794,"text":1512},{"id":1643,"depth":794,"text":1644},{"id":1782,"depth":775,"text":1783,"children":3220},[3221,3222],{"id":1789,"depth":794,"text":1790},{"id":1996,"depth":794,"text":1997},{"id":2096,"depth":775,"text":2097,"children":3224},[3225,3226],{"id":2248,"depth":794,"text":2249},{"id":2873,"depth":794,"text":2874},{"id":2944,"depth":775,"text":2945,"children":3228},[3229,3230,3231,3232],{"id":2948,"depth":794,"text":2949},{"id":2964,"depth":794,"text":2965},{"id":2985,"depth":794,"text":2986},{"id":3007,"depth":794,"text":3008},{"id":3026,"depth":775,"text":3027},{"id":3175,"depth":775,"text":3176},"Send logs via OpenTelemetry Protocol (OTLP) to Grafana, Datadog, Honeycomb, and any compatible backend. Supports gRPC and HTTP transports.","md",[3238,3245],{"label":3239,"icon":3240,"to":3241,"target":3242,"color":3243,"variant":3244},"OpenTelemetry Docs","i-lucide-external-link","https:\u002F\u002Fopentelemetry.io\u002Fdocs\u002F","_blank","neutral","subtle",{"label":3195,"icon":344,"to":504,"color":3243,"variant":3244},{},{"title":201,"icon":204},{"title":578,"description":3235},"KKbngbc7zbk8h-UfPHxW4sZ_9fnH5bEdsK5gRHLYBiE",[3251,3253],{"title":196,"path":197,"stem":198,"description":3252,"icon":199,"children":-1},"Insert wide events into ClickHouse over the HTTP interface — typed columns for what you aggregate, full JSON for everything else.",{"title":206,"path":207,"stem":208,"description":3254,"icon":209,"children":-1},"Send wide events to HyperDX over OTLP\u002FHTTP, using its documented endpoint and authorization header. Configured from environment variables.",1790280242555]