[{"data":1,"prerenderedAt":3914},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-hybrid-otlp":602,"-integrate-adapters-hybrid-otlp-surround":3909},[4,35,85,138,318,479,538,577],{"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,453],{"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,"icon":455,"path":456,"stem":457,"children":458,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[459,462,467,472,475],{"title":41,"path":460,"stem":461,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":463,"path":464,"stem":465,"icon":466},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":468,"path":469,"stem":470,"icon":471},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":436,"path":473,"stem":474,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":415,"path":476,"stem":477,"icon":478},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":480,"path":481,"stem":482,"children":483,"page":34},"Extend","\u002Fextend","6.extend",[484,488,493,498,502,507,511,515,519,523,528,533],{"title":41,"path":485,"stem":486,"icon":487},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":489,"path":490,"stem":491,"icon":492},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":494,"path":495,"stem":496,"icon":497},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":499,"path":500,"stem":501,"icon":492},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":503,"path":504,"stem":505,"icon":506},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":415,"path":508,"stem":509,"icon":510},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":512,"path":513,"stem":514,"icon":487},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":516,"path":517,"stem":518,"icon":443},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":520,"path":521,"stem":522,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":524,"path":525,"stem":526,"icon":527},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":529,"path":530,"stem":531,"icon":532},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":534,"path":535,"stem":536,"icon":537},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":436,"path":539,"stem":540,"children":541,"page":34},"\u002Freference","7.reference",[542,546,551,554,559,563,568,572],{"title":41,"path":543,"stem":544,"icon":545},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":547,"path":548,"stem":549,"icon":550},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":383,"path":552,"stem":553,"icon":112},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":555,"path":556,"stem":557,"icon":558},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":560,"path":561,"stem":562,"icon":388},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":564,"path":565,"stem":566,"icon":567},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":569,"path":570,"stem":571,"icon":443},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":573,"path":574,"stem":575,"icon":576},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":578,"path":579,"stem":580,"children":581,"page":34},"Compare","\u002Fcompare","8.compare",[582,586,590,594,598],{"title":583,"path":584,"stem":585,"icon":567},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":587,"path":588,"stem":589,"icon":204},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":591,"path":592,"stem":593,"icon":567},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":595,"path":596,"stem":597,"icon":567},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":599,"path":600,"stem":601,"icon":567},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":603,"title":604,"body":605,"description":3894,"extension":3895,"links":3896,"meta":3905,"navigation":3906,"path":202,"seo":3907,"stem":203,"__hash__":3908},"docs\u002F4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp.md","OTLP Adapter",{"type":606,"value":607,"toc":3863},"minimark",[608,612,656,702,706,709,753,756,761,780,784,1363,1366,1369,1395,1399,1571,1580,1584,1652,1656,1784,1788,1991,1995,1998,2002,2005,2139,2189,2201,2204,2208,2211,2295,2304,2308,2311,2433,2454,2490,2519,2523,2530,3082,3087,3199,3217,3225,3229,3242,3399,3405,3409,3422,3491,3501,3505,3598,3602,3606,3615,3618,3622,3625,3639,3643,3649,3662,3666,3681,3685,3688,3830,3834,3859],[609,610,611],"p",{},"The OTLP (OpenTelemetry Protocol) adapter sends logs in the standard OpenTelemetry format. This works with any OTLP-compatible backend including:",[613,614,615,623,627,632,637,642,647,652],"ul",{},[616,617,618,622],"li",{},[619,620,621],"strong",{},"Grafana Cloud"," (Loki)",[616,624,625],{},[619,626,181],{},[616,628,629],{},[619,630,631],{},"Honeycomb",[616,633,634],{},[619,635,636],{},"Jaeger",[616,638,639],{},[619,640,641],{},"Splunk",[616,643,644],{},[619,645,646],{},"New Relic",[616,648,649],{},[619,650,651],{},"Self-hosted OpenTelemetry Collector",[616,653,654],{},[619,655,206],{},[657,658,661,664,688],"prompt",{":actions":659,"description":660,"icon":204},"[\"copy\",\"cursor\",\"claude\"]","Add the OTLP drain adapter",[609,662,663],{},"Add the OTLP drain adapter to send evlog wide events via OpenTelemetry Protocol.",[665,666,667,670,673,676,679,682,685],"ol",{},[616,668,669],{},"Identify which framework I'm using and follow its evlog integration pattern",[616,671,672],{},"Install evlog if not already installed",[616,674,675],{},"Import createOTLPDrain from 'evlog\u002Fotlp'",[616,677,678],{},"Wire createOTLPDrain() into my framework's drain configuration",[616,680,681],{},"Set OTLP_ENDPOINT environment variable (collector URL)",[616,683,684],{},"Optionally set OTLP_HEADERS for authentication",[616,686,687],{},"Test by triggering a request and checking your OTLP backend (Grafana, Datadog, Honeycomb, etc.)",[609,689,690,691,697,698],{},"Adapter docs: ",[692,693,694],"a",{"href":694,"rel":695},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp",[696],"nofollow","\nFramework setup: ",[692,699,700],{"href":700,"rel":701},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[696],[703,704,20],"h2",{"id":705},"installation",[609,707,708],{},"The OTLP adapter comes bundled with evlog:",[710,711,717],"pre",{"className":712,"code":713,"filename":714,"language":715,"meta":716,"style":716},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createOTLPDrain } from 'evlog\u002Fotlp'\n","src\u002Findex.ts","typescript","",[718,719,720],"code",{"__ignoreMap":716},[721,722,725,729,733,737,740,743,746,750],"span",{"class":723,"line":724},"line",1,[721,726,728],{"class":727},"s7zQu","import",[721,730,732],{"class":731},"sMK4o"," {",[721,734,736],{"class":735},"sTEyZ"," createOTLPDrain",[721,738,739],{"class":731}," }",[721,741,742],{"class":727}," from",[721,744,745],{"class":731}," '",[721,747,749],{"class":748},"sfazB","evlog\u002Fotlp",[721,751,752],{"class":731},"'\n",[703,754,25],{"id":755},"quick-start",[757,758,760],"h3",{"id":759},"_1-set-your-otlp-endpoint","1. Set your OTLP endpoint",[710,762,767],{"className":763,"code":764,"filename":765,"language":766,"meta":716,"style":716},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","OTLP_ENDPOINT=http:\u002F\u002Flocalhost:4318\n",".env","bash",[718,768,769],{"__ignoreMap":716},[721,770,771,774,777],{"class":723,"line":724},[721,772,773],{"class":735},"OTLP_ENDPOINT",[721,775,776],{"class":731},"=",[721,778,779],{"class":748},"http:\u002F\u002Flocalhost:4318\n",[757,781,783],{"id":782},"_2-wire-the-drain-to-your-framework","2. Wire the drain to your framework",[785,786,787,902,1033,1095,1149,1208,1262,1315],"code-group",{},[710,788,791],{"className":712,"code":789,"filename":790,"language":715,"meta":716,"style":716},"\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",[718,792,793,799,818,825,857,893],{"__ignoreMap":716},[721,794,795],{"class":723,"line":724},[721,796,798],{"class":797},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[721,800,802,804,806,808,810,812,814,816],{"class":723,"line":801},2,[721,803,728],{"class":727},[721,805,732],{"class":731},[721,807,736],{"class":735},[721,809,739],{"class":731},[721,811,742],{"class":727},[721,813,745],{"class":731},[721,815,749],{"class":748},[721,817,752],{"class":731},[721,819,821],{"class":723,"line":820},3,[721,822,824],{"emptyLinePlaceholder":823},true,"\n",[721,826,828,831,834,838,841,843,847,850,854],{"class":723,"line":827},4,[721,829,830],{"class":727},"export",[721,832,833],{"class":727}," default",[721,835,837],{"class":836},"s2Zo4"," defineNitroPlugin",[721,839,840],{"class":735},"(",[721,842,840],{"class":731},[721,844,846],{"class":845},"sHdIc","nitroApp",[721,848,849],{"class":731},")",[721,851,853],{"class":852},"spNyl"," =>",[721,855,856],{"class":731}," {\n",[721,858,860,863,866,869,871,874,877,880,883,885,888,890],{"class":723,"line":859},5,[721,861,862],{"class":735},"  nitroApp",[721,864,865],{"class":731},".",[721,867,868],{"class":735},"hooks",[721,870,865],{"class":731},[721,872,873],{"class":836},"hook",[721,875,840],{"class":876},"swJcz",[721,878,879],{"class":731},"'",[721,881,882],{"class":748},"evlog:drain",[721,884,879],{"class":731},[721,886,887],{"class":731},",",[721,889,736],{"class":836},[721,891,892],{"class":876},"())\n",[721,894,896,899],{"class":723,"line":895},6,[721,897,898],{"class":731},"}",[721,900,901],{"class":735},")\n",[710,903,905],{"className":712,"code":904,"filename":245,"language":715,"meta":716,"style":716},"\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",[718,906,907,912,932,950,954,993,1011,1026],{"__ignoreMap":716},[721,908,909],{"class":723,"line":724},[721,910,911],{"class":797},"\u002F\u002F lib\u002Fevlog.ts\n",[721,913,914,916,918,921,923,925,927,930],{"class":723,"line":801},[721,915,728],{"class":727},[721,917,732],{"class":731},[721,919,920],{"class":735}," createEvlog",[721,922,739],{"class":731},[721,924,742],{"class":727},[721,926,745],{"class":731},[721,928,929],{"class":748},"evlog\u002Fnext",[721,931,752],{"class":731},[721,933,934,936,938,940,942,944,946,948],{"class":723,"line":820},[721,935,728],{"class":727},[721,937,732],{"class":731},[721,939,736],{"class":735},[721,941,739],{"class":731},[721,943,742],{"class":727},[721,945,745],{"class":731},[721,947,749],{"class":748},[721,949,752],{"class":731},[721,951,952],{"class":723,"line":827},[721,953,824],{"emptyLinePlaceholder":823},[721,955,956,958,961,963,966,968,971,973,976,978,981,983,986,988,990],{"class":723,"line":859},[721,957,830],{"class":727},[721,959,960],{"class":852}," const",[721,962,732],{"class":731},[721,964,965],{"class":735}," withEvlog",[721,967,887],{"class":731},[721,969,970],{"class":735}," useLogger",[721,972,887],{"class":731},[721,974,975],{"class":735}," log",[721,977,887],{"class":731},[721,979,980],{"class":735}," createError ",[721,982,898],{"class":731},[721,984,985],{"class":731}," =",[721,987,920],{"class":836},[721,989,840],{"class":735},[721,991,992],{"class":731},"{\n",[721,994,995,998,1001,1003,1006,1008],{"class":723,"line":895},[721,996,997],{"class":876},"  service",[721,999,1000],{"class":731},":",[721,1002,745],{"class":731},[721,1004,1005],{"class":748},"my-app",[721,1007,879],{"class":731},[721,1009,1010],{"class":731},",\n",[721,1012,1014,1017,1019,1021,1024],{"class":723,"line":1013},7,[721,1015,1016],{"class":876},"  drain",[721,1018,1000],{"class":731},[721,1020,736],{"class":836},[721,1022,1023],{"class":735},"()",[721,1025,1010],{"class":731},[721,1027,1029,1031],{"class":723,"line":1028},8,[721,1030,898],{"class":731},[721,1032,901],{"class":735},[710,1034,1036],{"className":712,"code":1035,"filename":275,"language":715,"meta":716,"style":716},"import { createOTLPDrain } from 'evlog\u002Fotlp'\n\napp.use(evlog({ drain: createOTLPDrain() }))\n",[718,1037,1038,1056,1060],{"__ignoreMap":716},[721,1039,1040,1042,1044,1046,1048,1050,1052,1054],{"class":723,"line":724},[721,1041,728],{"class":727},[721,1043,732],{"class":731},[721,1045,736],{"class":735},[721,1047,739],{"class":731},[721,1049,742],{"class":727},[721,1051,745],{"class":731},[721,1053,749],{"class":748},[721,1055,752],{"class":731},[721,1057,1058],{"class":723,"line":801},[721,1059,824],{"emptyLinePlaceholder":823},[721,1061,1062,1065,1067,1070,1072,1075,1077,1080,1083,1085,1087,1090,1092],{"class":723,"line":820},[721,1063,1064],{"class":735},"app",[721,1066,865],{"class":731},[721,1068,1069],{"class":836},"use",[721,1071,840],{"class":735},[721,1073,1074],{"class":836},"evlog",[721,1076,840],{"class":735},[721,1078,1079],{"class":731},"{",[721,1081,1082],{"class":876}," drain",[721,1084,1000],{"class":731},[721,1086,736],{"class":836},[721,1088,1089],{"class":735},"() ",[721,1091,898],{"class":731},[721,1093,1094],{"class":735},"))\n",[710,1096,1097],{"className":712,"code":1035,"filename":270,"language":715,"meta":716,"style":716},[718,1098,1099,1117,1121],{"__ignoreMap":716},[721,1100,1101,1103,1105,1107,1109,1111,1113,1115],{"class":723,"line":724},[721,1102,728],{"class":727},[721,1104,732],{"class":731},[721,1106,736],{"class":735},[721,1108,739],{"class":731},[721,1110,742],{"class":727},[721,1112,745],{"class":731},[721,1114,749],{"class":748},[721,1116,752],{"class":731},[721,1118,1119],{"class":723,"line":801},[721,1120,824],{"emptyLinePlaceholder":823},[721,1122,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147],{"class":723,"line":820},[721,1124,1064],{"class":735},[721,1126,865],{"class":731},[721,1128,1069],{"class":836},[721,1130,840],{"class":735},[721,1132,1074],{"class":836},[721,1134,840],{"class":735},[721,1136,1079],{"class":731},[721,1138,1082],{"class":876},[721,1140,1000],{"class":731},[721,1142,736],{"class":836},[721,1144,1089],{"class":735},[721,1146,898],{"class":731},[721,1148,1094],{"class":735},[710,1150,1152],{"className":712,"code":1151,"filename":280,"language":715,"meta":716,"style":716},"import { createOTLPDrain } from 'evlog\u002Fotlp'\n\nawait app.register(evlog, { drain: createOTLPDrain() })\n",[718,1153,1154,1172,1176],{"__ignoreMap":716},[721,1155,1156,1158,1160,1162,1164,1166,1168,1170],{"class":723,"line":724},[721,1157,728],{"class":727},[721,1159,732],{"class":731},[721,1161,736],{"class":735},[721,1163,739],{"class":731},[721,1165,742],{"class":727},[721,1167,745],{"class":731},[721,1169,749],{"class":748},[721,1171,752],{"class":731},[721,1173,1174],{"class":723,"line":801},[721,1175,824],{"emptyLinePlaceholder":823},[721,1177,1178,1181,1184,1186,1189,1192,1194,1196,1198,1200,1202,1204,1206],{"class":723,"line":820},[721,1179,1180],{"class":727},"await",[721,1182,1183],{"class":735}," app",[721,1185,865],{"class":731},[721,1187,1188],{"class":836},"register",[721,1190,1191],{"class":735},"(evlog",[721,1193,887],{"class":731},[721,1195,732],{"class":731},[721,1197,1082],{"class":876},[721,1199,1000],{"class":731},[721,1201,736],{"class":836},[721,1203,1089],{"class":735},[721,1205,898],{"class":731},[721,1207,901],{"class":735},[710,1209,1210],{"className":712,"code":1035,"filename":285,"language":715,"meta":716,"style":716},[718,1211,1212,1230,1234],{"__ignoreMap":716},[721,1213,1214,1216,1218,1220,1222,1224,1226,1228],{"class":723,"line":724},[721,1215,728],{"class":727},[721,1217,732],{"class":731},[721,1219,736],{"class":735},[721,1221,739],{"class":731},[721,1223,742],{"class":727},[721,1225,745],{"class":731},[721,1227,749],{"class":748},[721,1229,752],{"class":731},[721,1231,1232],{"class":723,"line":801},[721,1233,824],{"emptyLinePlaceholder":823},[721,1235,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260],{"class":723,"line":820},[721,1237,1064],{"class":735},[721,1239,865],{"class":731},[721,1241,1069],{"class":836},[721,1243,840],{"class":735},[721,1245,1074],{"class":836},[721,1247,840],{"class":735},[721,1249,1079],{"class":731},[721,1251,1082],{"class":876},[721,1253,1000],{"class":731},[721,1255,736],{"class":836},[721,1257,1089],{"class":735},[721,1259,898],{"class":731},[721,1261,1094],{"class":735},[710,1263,1265],{"className":712,"code":1264,"filename":265,"language":715,"meta":716,"style":716},"import { createOTLPDrain } from 'evlog\u002Fotlp'\n\nEvlogModule.forRoot({ drain: createOTLPDrain() })\n",[718,1266,1267,1285,1289],{"__ignoreMap":716},[721,1268,1269,1271,1273,1275,1277,1279,1281,1283],{"class":723,"line":724},[721,1270,728],{"class":727},[721,1272,732],{"class":731},[721,1274,736],{"class":735},[721,1276,739],{"class":731},[721,1278,742],{"class":727},[721,1280,745],{"class":731},[721,1282,749],{"class":748},[721,1284,752],{"class":731},[721,1286,1287],{"class":723,"line":801},[721,1288,824],{"emptyLinePlaceholder":823},[721,1290,1291,1294,1296,1299,1301,1303,1305,1307,1309,1311,1313],{"class":723,"line":820},[721,1292,1293],{"class":735},"EvlogModule",[721,1295,865],{"class":731},[721,1297,1298],{"class":836},"forRoot",[721,1300,840],{"class":735},[721,1302,1079],{"class":731},[721,1304,1082],{"class":876},[721,1306,1000],{"class":731},[721,1308,736],{"class":836},[721,1310,1089],{"class":735},[721,1312,898],{"class":731},[721,1314,901],{"class":735},[710,1316,1318],{"className":712,"code":1317,"filename":300,"language":715,"meta":716,"style":716},"import { createOTLPDrain } from 'evlog\u002Fotlp'\n\ninitLogger({ drain: createOTLPDrain() })\n",[718,1319,1320,1338,1342],{"__ignoreMap":716},[721,1321,1322,1324,1326,1328,1330,1332,1334,1336],{"class":723,"line":724},[721,1323,728],{"class":727},[721,1325,732],{"class":731},[721,1327,736],{"class":735},[721,1329,739],{"class":731},[721,1331,742],{"class":727},[721,1333,745],{"class":731},[721,1335,749],{"class":748},[721,1337,752],{"class":731},[721,1339,1340],{"class":723,"line":801},[721,1341,824],{"emptyLinePlaceholder":823},[721,1343,1344,1347,1349,1351,1353,1355,1357,1359,1361],{"class":723,"line":820},[721,1345,1346],{"class":836},"initLogger",[721,1348,840],{"class":735},[721,1350,1079],{"class":731},[721,1352,1082],{"class":876},[721,1354,1000],{"class":731},[721,1356,736],{"class":836},[721,1358,1089],{"class":735},[721,1360,898],{"class":731},[721,1362,901],{"class":735},[703,1364,547],{"id":1365},"configuration",[609,1367,1368],{},"The adapter reads configuration from multiple sources (highest priority first):",[665,1370,1371,1380,1390],{},[616,1372,1373,1376,1377],{},[619,1374,1375],{},"Overrides"," passed to ",[718,1378,1379],{},"createOTLPDrain()",[616,1381,1382,1385,1386,1389],{},[619,1383,1384],{},"Runtime config"," at ",[718,1387,1388],{},"runtimeConfig.otlp"," (Nuxt\u002FNitro only)",[616,1391,1392],{},[619,1393,1394],{},"Environment variables",[757,1396,1398],{"id":1397},"environment-variables","Environment Variables",[1400,1401,1402,1415],"table",{},[1403,1404,1405],"thead",{},[1406,1407,1408,1412],"tr",{},[1409,1410,1411],"th",{},"Variable",[1409,1413,1414],{},"Description",[1416,1417,1418,1436,1453,1469,1482,1503,1526,1536],"tbody",{},[1406,1419,1420,1425],{},[1421,1422,1423],"td",{},[718,1424,773],{},[1421,1426,1427,1428,1431,1432,1435],{},"OTLP HTTP endpoint (e.g., ",[718,1429,1430],{},"http:\u002F\u002Flocalhost:4318","). The standard ",[718,1433,1434],{},"OTEL_EXPORTER_OTLP_ENDPOINT"," also works.",[1406,1437,1438,1443],{},[1421,1439,1440],{},[718,1441,1442],{},"OTLP_HEADERS",[1421,1444,1445,1446,1449,1450,1435],{},"Headers as ",[718,1447,1448],{},"key=value"," pairs, comma-separated. The standard ",[718,1451,1452],{},"OTEL_EXPORTER_OTLP_HEADERS",[1406,1454,1455,1460],{},[1421,1456,1457],{},[718,1458,1459],{},"OTEL_EXPORTER_OTLP_LOGS_ENDPOINT",[1421,1461,1462,1463,1466,1467,865],{},"Full logs URL, used as-is with no ",[718,1464,1465],{},"\u002Fv1\u002Flogs"," appended. Takes precedence over ",[718,1468,1434],{},[1406,1470,1471,1476],{},[1421,1472,1473],{},[718,1474,1475],{},"OTEL_EXPORTER_OTLP_LOGS_HEADERS",[1421,1477,1478,1479,1481],{},"Headers for the logs signal. Merged over ",[718,1480,1452],{},", winning on conflicts.",[1406,1483,1484,1489],{},[1421,1485,1486],{},[718,1487,1488],{},"OTEL_EXPORTER_OTLP_COMPRESSION",[1421,1490,1491,1494,1495,1498,1499,1502],{},[718,1492,1493],{},"gzip"," or ",[718,1496,1497],{},"none",". ",[718,1500,1501],{},"OTEL_EXPORTER_OTLP_LOGS_COMPRESSION"," takes precedence.",[1406,1504,1505,1510],{},[1421,1506,1507],{},[718,1508,1509],{},"OTEL_EXPORTER_OTLP_PROTOCOL",[1421,1511,1512,1494,1515,1498,1518,1521,1522,1525],{},[718,1513,1514],{},"http\u002Fjson",[718,1516,1517],{},"http\u002Fprotobuf",[718,1519,1520],{},"OTEL_EXPORTER_OTLP_LOGS_PROTOCOL"," takes precedence. ",[718,1523,1524],{},"grpc"," is not supported.",[1406,1527,1528,1533],{},[1421,1529,1530],{},[718,1531,1532],{},"OTEL_SERVICE_NAME",[1421,1534,1535],{},"Service name override",[1406,1537,1538,1543],{},[1421,1539,1540],{},[718,1541,1542],{},"OTEL_RESOURCE_ATTRIBUTES",[1421,1544,1545,1546,1548,1549,1552,1553,1556,1557,1556,1560,1556,1563,1566,1567,1570],{},"Resource attributes as ",[718,1547,1448],{}," pairs, comma-separated. ",[718,1550,1551],{},"resourceAttributes"," and the event's ",[718,1554,1555],{},"service",", ",[718,1558,1559],{},"environment",[718,1561,1562],{},"version",[718,1564,1565],{},"region"," and ",[718,1568,1569],{},"commitHash"," take precedence.",[609,1572,1573,1574,1579],{},"These follow the ",[692,1575,1578],{"href":1576,"rel":1577},"https:\u002F\u002Fopentelemetry.io\u002Fdocs\u002Fspecs\u002Fotel\u002Fprotocol\u002Fexporter\u002F",[696],"OpenTelemetry exporter specification",", so a deployment that already configures an OTel SDK through the environment needs no evlog-specific variables.",[757,1581,1583],{"id":1582},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[710,1585,1588],{"className":712,"code":1586,"filename":1587,"language":715,"meta":716,"style":716},"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",[718,1589,1590,1603,1612,1621,1636,1641,1646],{"__ignoreMap":716},[721,1591,1592,1594,1596,1599,1601],{"class":723,"line":724},[721,1593,830],{"class":727},[721,1595,833],{"class":727},[721,1597,1598],{"class":836}," defineNuxtConfig",[721,1600,840],{"class":735},[721,1602,992],{"class":731},[721,1604,1605,1608,1610],{"class":723,"line":801},[721,1606,1607],{"class":876},"  runtimeConfig",[721,1609,1000],{"class":731},[721,1611,856],{"class":731},[721,1613,1614,1617,1619],{"class":723,"line":820},[721,1615,1616],{"class":876},"    otlp",[721,1618,1000],{"class":731},[721,1620,856],{"class":731},[721,1622,1623,1626,1628,1631,1633],{"class":723,"line":827},[721,1624,1625],{"class":876},"      endpoint",[721,1627,1000],{"class":731},[721,1629,1630],{"class":731}," ''",[721,1632,887],{"class":731},[721,1634,1635],{"class":797}," \u002F\u002F Set via OTLP_ENDPOINT (or OTEL_EXPORTER_OTLP_ENDPOINT)\n",[721,1637,1638],{"class":723,"line":859},[721,1639,1640],{"class":731},"    },\n",[721,1642,1643],{"class":723,"line":895},[721,1644,1645],{"class":731},"  },\n",[721,1647,1648,1650],{"class":723,"line":1013},[721,1649,898],{"class":731},[721,1651,901],{"class":735},[757,1653,1655],{"id":1654},"override-options","Override Options",[710,1657,1660],{"className":712,"code":1658,"filename":1659,"language":715,"meta":716,"style":716},"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",[718,1661,1662,1678,1693,1709,1718,1739,1743,1752,1772,1777],{"__ignoreMap":716},[721,1663,1664,1667,1670,1672,1674,1676],{"class":723,"line":724},[721,1665,1666],{"class":852},"const",[721,1668,1669],{"class":735}," drain ",[721,1671,776],{"class":731},[721,1673,736],{"class":836},[721,1675,840],{"class":735},[721,1677,992],{"class":731},[721,1679,1680,1683,1685,1687,1689,1691],{"class":723,"line":801},[721,1681,1682],{"class":876},"  endpoint",[721,1684,1000],{"class":731},[721,1686,745],{"class":731},[721,1688,1430],{"class":748},[721,1690,879],{"class":731},[721,1692,1010],{"class":731},[721,1694,1695,1698,1700,1702,1705,1707],{"class":723,"line":820},[721,1696,1697],{"class":876},"  serviceName",[721,1699,1000],{"class":731},[721,1701,745],{"class":731},[721,1703,1704],{"class":748},"my-api",[721,1706,879],{"class":731},[721,1708,1010],{"class":731},[721,1710,1711,1714,1716],{"class":723,"line":827},[721,1712,1713],{"class":876},"  headers",[721,1715,1000],{"class":731},[721,1717,856],{"class":731},[721,1719,1720,1723,1726,1728,1730,1732,1735,1737],{"class":723,"line":859},[721,1721,1722],{"class":731},"    '",[721,1724,1725],{"class":876},"Authorization",[721,1727,879],{"class":731},[721,1729,1000],{"class":731},[721,1731,745],{"class":731},[721,1733,1734],{"class":748},"Bearer xxx",[721,1736,879],{"class":731},[721,1738,1010],{"class":731},[721,1740,1741],{"class":723,"line":895},[721,1742,1645],{"class":731},[721,1744,1745,1748,1750],{"class":723,"line":1013},[721,1746,1747],{"class":876},"  resourceAttributes",[721,1749,1000],{"class":731},[721,1751,856],{"class":731},[721,1753,1754,1756,1759,1761,1763,1765,1768,1770],{"class":723,"line":1028},[721,1755,1722],{"class":731},[721,1757,1758],{"class":876},"deployment.environment",[721,1760,879],{"class":731},[721,1762,1000],{"class":731},[721,1764,745],{"class":731},[721,1766,1767],{"class":748},"staging",[721,1769,879],{"class":731},[721,1771,1010],{"class":731},[721,1773,1775],{"class":723,"line":1774},9,[721,1776,1645],{"class":731},[721,1778,1780,1782],{"class":723,"line":1779},10,[721,1781,898],{"class":731},[721,1783,901],{"class":735},[757,1785,1787],{"id":1786},"full-configuration-reference","Full Configuration Reference",[1400,1789,1790,1805],{},[1403,1791,1792],{},[1406,1793,1794,1797,1800,1803],{},[1409,1795,1796],{},"Option",[1409,1798,1799],{},"Type",[1409,1801,1802],{},"Default",[1409,1804,1414],{},[1416,1806,1807,1825,1846,1863,1878,1902,1925,1948,1971],{},[1406,1808,1809,1814,1819,1822],{},[1421,1810,1811],{},[718,1812,1813],{},"endpoint",[1421,1815,1816],{},[718,1817,1818],{},"string",[1421,1820,1821],{},"-",[1421,1823,1824],{},"OTLP HTTP endpoint (required)",[1406,1826,1827,1832,1836,1839],{},[1421,1828,1829],{},[718,1830,1831],{},"serviceName",[1421,1833,1834],{},[718,1835,1818],{},[1421,1837,1838],{},"From event",[1421,1840,1841,1842,1845],{},"Override ",[718,1843,1844],{},"service.name"," resource attribute",[1406,1847,1848,1853,1858,1860],{},[1421,1849,1850],{},[718,1851,1852],{},"headers",[1421,1854,1855],{},[718,1856,1857],{},"object",[1421,1859,1821],{},[1421,1861,1862],{},"Custom HTTP headers for authentication",[1406,1864,1865,1869,1873,1875],{},[1421,1866,1867],{},[718,1868,1551],{},[1421,1870,1871],{},[718,1872,1857],{},[1421,1874,1821],{},[1421,1876,1877],{},"Additional OTLP resource attributes",[1406,1879,1880,1885,1890,1895],{},[1421,1881,1882],{},[718,1883,1884],{},"recordShape",[1421,1886,1887],{},[718,1888,1889],{},"'json' | 'compact'",[1421,1891,1892],{},[718,1893,1894],{},"'json'",[1421,1896,1897,1898,849],{},"How the record carries the event (",[692,1899,1901],{"href":1900},"#record-shape","details",[1406,1903,1904,1909,1914,1919],{},[1421,1905,1906],{},[718,1907,1908],{},"compression",[1421,1910,1911],{},[718,1912,1913],{},"'gzip' | 'none'",[1421,1915,1916],{},[718,1917,1918],{},"'none'",[1421,1920,1921,1922],{},"Gzip the request body and send ",[718,1923,1924],{},"Content-Encoding: gzip",[1406,1926,1927,1932,1937,1942],{},[1421,1928,1929],{},[718,1930,1931],{},"protocol",[1421,1933,1934],{},[718,1935,1936],{},"'http\u002Fjson' | 'http\u002Fprotobuf'",[1421,1938,1939],{},[718,1940,1941],{},"'http\u002Fjson'",[1421,1943,1944,1945,849],{},"Request body encoding (",[692,1946,1901],{"href":1947},"#protobuf",[1406,1949,1950,1955,1960,1965],{},[1421,1951,1952],{},[718,1953,1954],{},"semanticConventions",[1421,1956,1957],{},[718,1958,1959],{},"boolean",[1421,1961,1962],{},[718,1963,1964],{},"false",[1421,1966,1967,1968,849],{},"Add OpenTelemetry attribute names next to the evlog ones (",[692,1969,1901],{"href":1970},"#semantic-conventions",[1406,1972,1973,1978,1983,1988],{},[1421,1974,1975],{},[718,1976,1977],{},"timeout",[1421,1979,1980],{},[718,1981,1982],{},"number",[1421,1984,1985],{},[718,1986,1987],{},"5000",[1421,1989,1990],{},"Request timeout in milliseconds",[703,1992,1994],{"id":1993},"deployment","Deployment",[609,1996,1997],{},"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.",[757,1999,2001],{"id":2000},"self-hosted","Self-hosted",[609,2003,2004],{},"Run an OpenTelemetry Collector and point evlog at it. Nothing else to configure:",[710,2006,2011],{"className":2007,"code":2008,"filename":2009,"language":2010,"meta":716,"style":716},"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",[718,2012,2013,2021,2028,2035,2042,2052,2056,2063,2070,2080,2084,2091,2099,2107,2124],{"__ignoreMap":716},[721,2014,2015,2018],{"class":723,"line":724},[721,2016,2017],{"class":876},"receivers",[721,2019,2020],{"class":731},":\n",[721,2022,2023,2026],{"class":723,"line":801},[721,2024,2025],{"class":876},"  otlp",[721,2027,2020],{"class":731},[721,2029,2030,2033],{"class":723,"line":820},[721,2031,2032],{"class":876},"    protocols",[721,2034,2020],{"class":731},[721,2036,2037,2040],{"class":723,"line":827},[721,2038,2039],{"class":876},"      http",[721,2041,2020],{"class":731},[721,2043,2044,2047,2049],{"class":723,"line":859},[721,2045,2046],{"class":876},"        endpoint",[721,2048,1000],{"class":731},[721,2050,2051],{"class":748}," 0.0.0.0:4318\n",[721,2053,2054],{"class":723,"line":895},[721,2055,824],{"emptyLinePlaceholder":823},[721,2057,2058,2061],{"class":723,"line":1013},[721,2059,2060],{"class":876},"exporters",[721,2062,2020],{"class":731},[721,2064,2065,2068],{"class":723,"line":1028},[721,2066,2067],{"class":876},"  debug",[721,2069,2020],{"class":731},[721,2071,2072,2075,2077],{"class":723,"line":1774},[721,2073,2074],{"class":876},"    verbosity",[721,2076,1000],{"class":731},[721,2078,2079],{"class":748}," detailed\n",[721,2081,2082],{"class":723,"line":1779},[721,2083,824],{"emptyLinePlaceholder":823},[721,2085,2087,2089],{"class":723,"line":2086},11,[721,2088,1555],{"class":876},[721,2090,2020],{"class":731},[721,2092,2094,2097],{"class":723,"line":2093},12,[721,2095,2096],{"class":876},"  pipelines",[721,2098,2020],{"class":731},[721,2100,2102,2105],{"class":723,"line":2101},13,[721,2103,2104],{"class":876},"    logs",[721,2106,2020],{"class":731},[721,2108,2110,2113,2115,2118,2121],{"class":723,"line":2109},14,[721,2111,2112],{"class":876},"      receivers",[721,2114,1000],{"class":731},[721,2116,2117],{"class":731}," [",[721,2119,2120],{"class":748},"otlp",[721,2122,2123],{"class":731},"]\n",[721,2125,2127,2130,2132,2134,2137],{"class":723,"line":2126},15,[721,2128,2129],{"class":876},"      exporters",[721,2131,1000],{"class":731},[721,2133,2117],{"class":731},[721,2135,2136],{"class":748},"debug",[721,2138,2123],{"class":731},[710,2140,2143],{"className":763,"code":2141,"filename":2142,"language":766,"meta":716,"style":716},"docker run --rm -p 4318:4318 \\\n  -v $(pwd)\u002Fotel-collector.yaml:\u002Fetc\u002Fotelcol\u002Fconfig.yaml \\\n  otel\u002Fopentelemetry-collector:latest\n","Terminal",[718,2144,2145,2166,2184],{"__ignoreMap":716},[721,2146,2147,2151,2154,2157,2160,2163],{"class":723,"line":724},[721,2148,2150],{"class":2149},"sBMFI","docker",[721,2152,2153],{"class":748}," run",[721,2155,2156],{"class":748}," --rm",[721,2158,2159],{"class":748}," -p",[721,2161,2162],{"class":748}," 4318:4318",[721,2164,2165],{"class":735}," \\\n",[721,2167,2168,2171,2174,2177,2179,2182],{"class":723,"line":801},[721,2169,2170],{"class":748},"  -v",[721,2172,2173],{"class":731}," $(",[721,2175,2176],{"class":836},"pwd",[721,2178,849],{"class":731},[721,2180,2181],{"class":748},"\u002Fotel-collector.yaml:\u002Fetc\u002Fotelcol\u002Fconfig.yaml",[721,2183,2165],{"class":735},[721,2185,2186],{"class":723,"line":820},[721,2187,2188],{"class":748},"  otel\u002Fopentelemetry-collector:latest\n",[710,2190,2191],{"className":763,"code":764,"filename":765,"language":766,"meta":716,"style":716},[718,2192,2193],{"__ignoreMap":716},[721,2194,2195,2197,2199],{"class":723,"line":724},[721,2196,773],{"class":735},[721,2198,776],{"class":731},[721,2200,779],{"class":748},[609,2202,2203],{},"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.",[757,2205,2207],{"id":2206},"managed-gateways","Managed gateways",[609,2209,2210],{},"Same adapter, a credentialed endpoint:",[785,2212,2213,2240,2268],{},[710,2214,2216],{"className":763,"code":2215,"filename":621,"language":766,"meta":716,"style":716},"OTLP_ENDPOINT=https:\u002F\u002Fotlp-gateway-prod-us-central-0.grafana.net\u002Fotlp\nOTEL_EXPORTER_OTLP_HEADERS=Authorization=Basic%20base64-encoded-credentials\n",[718,2217,2218,2227],{"__ignoreMap":716},[721,2219,2220,2222,2224],{"class":723,"line":724},[721,2221,773],{"class":735},[721,2223,776],{"class":731},[721,2225,2226],{"class":748},"https:\u002F\u002Fotlp-gateway-prod-us-central-0.grafana.net\u002Fotlp\n",[721,2228,2229,2231,2233,2235,2237],{"class":723,"line":801},[721,2230,1452],{"class":735},[721,2232,776],{"class":731},[721,2234,1725],{"class":735},[721,2236,776],{"class":731},[721,2238,2239],{"class":748},"Basic%20base64-encoded-credentials\n",[710,2241,2243],{"className":763,"code":2242,"filename":181,"language":766,"meta":716,"style":716},"OTLP_ENDPOINT=https:\u002F\u002Fhttp-intake.logs.datadoghq.com\nOTLP_HEADERS=DD-API-KEY=your-api-key\n",[718,2244,2245,2254],{"__ignoreMap":716},[721,2246,2247,2249,2251],{"class":723,"line":724},[721,2248,773],{"class":735},[721,2250,776],{"class":731},[721,2252,2253],{"class":748},"https:\u002F\u002Fhttp-intake.logs.datadoghq.com\n",[721,2255,2256,2258,2260,2263,2265],{"class":723,"line":801},[721,2257,1442],{"class":735},[721,2259,776],{"class":731},[721,2261,2262],{"class":735},"DD-API-KEY",[721,2264,776],{"class":731},[721,2266,2267],{"class":748},"your-api-key\n",[710,2269,2271],{"className":763,"code":2270,"filename":631,"language":766,"meta":716,"style":716},"OTLP_ENDPOINT=https:\u002F\u002Fapi.honeycomb.io\nOTLP_HEADERS=x-honeycomb-team=your-api-key\n",[718,2272,2273,2282],{"__ignoreMap":716},[721,2274,2275,2277,2279],{"class":723,"line":724},[721,2276,773],{"class":735},[721,2278,776],{"class":731},[721,2280,2281],{"class":748},"https:\u002F\u002Fapi.honeycomb.io\n",[721,2283,2284,2286,2288,2291,2293],{"class":723,"line":801},[721,2285,1442],{"class":735},[721,2287,776],{"class":731},[721,2289,2290],{"class":735},"x-honeycomb-team",[721,2292,776],{"class":731},[721,2294,2267],{"class":748},[2296,2297,2299,2300,2303],"callout",{"color":2298,"icon":13},"info","Grafana Cloud uses URL-encoded headers, so the ",[718,2301,2302],{},"%20"," is a space. The adapter\ndecodes that format automatically.",[703,2305,2307],{"id":2306},"otlp-log-format","OTLP Log Format",[609,2309,2310],{},"evlog maps wide events to the OTLP log format:",[1400,2312,2313,2323],{},[1403,2314,2315],{},[1406,2316,2317,2320],{},[1409,2318,2319],{},"evlog Field",[1409,2321,2322],{},"OTLP Field",[1416,2324,2325,2341,2353,2364,2381,2392,2403,2414,2425],{},[1406,2326,2327,2332],{},[1421,2328,2329],{},[718,2330,2331],{},"level",[1421,2333,2334,2337,2338],{},[718,2335,2336],{},"severityNumber"," \u002F ",[718,2339,2340],{},"severityText",[1406,2342,2343,2348],{},[1421,2344,2345],{},[718,2346,2347],{},"timestamp",[1421,2349,2350],{},[718,2351,2352],{},"timeUnixNano",[1406,2354,2355,2359],{},[1421,2356,2357],{},[718,2358,1555],{},[1421,2360,2361,2362],{},"Resource attribute ",[718,2363,1844],{},[1406,2365,2366,2370],{},[1421,2367,2368],{},[718,2369,1559],{},[1421,2371,2361,2372,2374,2375,2378,2379],{},[718,2373,1758],{},", plus ",[718,2376,2377],{},"deployment.environment.name"," with ",[718,2380,1954],{},[1406,2382,2383,2387],{},[1421,2384,2385],{},[718,2386,1562],{},[1421,2388,2361,2389],{},[718,2390,2391],{},"service.version",[1406,2393,2394,2398],{},[1421,2395,2396],{},[718,2397,1565],{},[1421,2399,2361,2400],{},[718,2401,2402],{},"cloud.region",[1406,2404,2405,2410],{},[1421,2406,2407],{},[718,2408,2409],{},"traceId",[1421,2411,2412],{},[718,2413,2409],{},[1406,2415,2416,2421],{},[1421,2417,2418],{},[718,2419,2420],{},"spanId",[1421,2422,2423],{},[718,2424,2420],{},[1406,2426,2427,2430],{},[1421,2428,2429],{},"All other fields",[1421,2431,2432],{},"Log attributes",[609,2434,2435,2437,2438,2442,2443,2446,2447,2450,2451,2453],{},[718,2436,2420],{}," is the span of the request that produced the event. The ",[692,2439,2441],{"href":2440},"\u002Fuse-cases\u002Fenrichers#tracecontextenricher","TraceContext enricher"," records the caller's span from an incoming ",[718,2444,2445],{},"traceparent"," as ",[718,2448,2449],{},"parentSpanId",", which is sent as a log attribute, so set ",[718,2452,2420],{}," from your tracer's active span to link the record to the server span.",[609,2455,2456,2457,2460,2461,2464,2465,2468,2469,2472,2473,2476,2477,2480,2481,2484,2485,1494,2487,2489],{},"Attribute values keep their type: integers are sent as ",[718,2458,2459],{},"intValue",", other finite numbers as ",[718,2462,2463],{},"doubleValue",", booleans as ",[718,2466,2467],{},"boolValue",", and arrays whose elements share one primitive type as ",[718,2470,2471],{},"arrayValue",". In the ",[718,2474,2475],{},"json"," shape, nested plain objects are sent as ",[718,2478,2479],{},"kvlistValue",". Anything else is serialized to a ",[718,2482,2483],{},"stringValue",". A ",[718,2486,2409],{},[718,2488,2420],{}," that is not valid W3C hex, or is all zeros, stays an ordinary attribute.",[609,2491,2492,2493,1566,2496,2499,2500,2503,2504,2507,2508,2511,2512,2515,2516,2518],{},"Every field of the wide event is sent as an OTLP record field, a resource attribute, or a log attribute. ",[718,2494,2495],{},"null",[718,2497,2498],{},"undefined"," are omitted rather than transmitted. Both shapes drop them at every level, so a nested ",[718,2501,2502],{},"{ user: { id: null } }"," has no ",[718,2505,2506],{},"user.id"," attribute in ",[718,2509,2510],{},"compact"," and no ",[718,2513,2514],{},"id"," entry in the ",[718,2517,2475],{}," key-value list.",[757,2520,2522],{"id":2521},"record-shape","Record Shape",[609,2524,2525,2527,2528,865],{},[718,2526,1884],{}," controls how the record carries the event. The default is ",[718,2529,2475],{},[785,2531,2532,2879],{},[710,2533,2537],{"className":2534,"code":2535,"filename":2536,"language":2475,"meta":716,"style":716},"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\": { \"kvlistValue\": { \"values\": [\n      { \"key\": \"id\", \"value\": { \"stringValue\": \"usr_123\" } },\n      { \"key\": \"plan\", \"value\": { \"stringValue\": \"premium\" } }\n    ] } } }\n  ]\n}\n","json (default)",[718,2538,2539,2543,2640,2654,2706,2757,2807,2858,2869,2874],{"__ignoreMap":716},[721,2540,2541],{"class":723,"line":724},[721,2542,992],{"class":731},[721,2544,2545,2548,2551,2554,2556,2558,2561,2563,2565,2567,2569,2571,2574,2576,2578,2580,2582,2585,2587,2589,2591,2594,2596,2598,2600,2603,2605,2607,2609,2612,2614,2617,2619,2621,2623,2625,2627,2630,2632,2635,2637],{"class":723,"line":801},[721,2546,2547],{"class":731},"  \"",[721,2549,2550],{"class":852},"body",[721,2552,2553],{"class":731},"\"",[721,2555,1000],{"class":731},[721,2557,732],{"class":731},[721,2559,2560],{"class":731}," \"",[721,2562,2483],{"class":2149},[721,2564,2553],{"class":731},[721,2566,1000],{"class":731},[721,2568,2560],{"class":731},[721,2570,1079],{"class":748},[721,2572,2573],{"class":735},"\\\"",[721,2575,2347],{"class":748},[721,2577,2573],{"class":735},[721,2579,1000],{"class":748},[721,2581,2573],{"class":735},[721,2583,2584],{"class":748},"…",[721,2586,2573],{"class":735},[721,2588,887],{"class":748},[721,2590,2573],{"class":735},[721,2592,2593],{"class":748},"method",[721,2595,2573],{"class":735},[721,2597,1000],{"class":748},[721,2599,2573],{"class":735},[721,2601,2602],{"class":748},"POST",[721,2604,2573],{"class":735},[721,2606,887],{"class":748},[721,2608,2573],{"class":735},[721,2610,2611],{"class":748},"user",[721,2613,2573],{"class":735},[721,2615,2616],{"class":748},":{",[721,2618,2573],{"class":735},[721,2620,2514],{"class":748},[721,2622,2573],{"class":735},[721,2624,1000],{"class":748},[721,2626,2573],{"class":735},[721,2628,2629],{"class":748},"usr_123",[721,2631,2573],{"class":735},[721,2633,2634],{"class":748},"}}",[721,2636,2553],{"class":731},[721,2638,2639],{"class":731}," },\n",[721,2641,2642,2644,2647,2649,2651],{"class":723,"line":820},[721,2643,2547],{"class":731},[721,2645,2646],{"class":852},"attributes",[721,2648,2553],{"class":731},[721,2650,1000],{"class":731},[721,2652,2653],{"class":731}," [\n",[721,2655,2656,2659,2661,2664,2666,2668,2670,2672,2674,2676,2678,2681,2683,2685,2687,2689,2692,2694,2696,2698,2700,2702,2704],{"class":723,"line":827},[721,2657,2658],{"class":731},"    {",[721,2660,2560],{"class":731},[721,2662,2663],{"class":2149},"key",[721,2665,2553],{"class":731},[721,2667,1000],{"class":731},[721,2669,2560],{"class":731},[721,2671,2593],{"class":748},[721,2673,2553],{"class":731},[721,2675,887],{"class":731},[721,2677,2560],{"class":731},[721,2679,2680],{"class":2149},"value",[721,2682,2553],{"class":731},[721,2684,1000],{"class":731},[721,2686,732],{"class":731},[721,2688,2560],{"class":731},[721,2690,2483],{"class":2691},"sbssI",[721,2693,2553],{"class":731},[721,2695,1000],{"class":731},[721,2697,2560],{"class":731},[721,2699,2602],{"class":748},[721,2701,2553],{"class":731},[721,2703,739],{"class":731},[721,2705,2639],{"class":731},[721,2707,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2751,2753,2755],{"class":723,"line":859},[721,2709,2658],{"class":731},[721,2711,2560],{"class":731},[721,2713,2663],{"class":2149},[721,2715,2553],{"class":731},[721,2717,1000],{"class":731},[721,2719,2560],{"class":731},[721,2721,2611],{"class":748},[721,2723,2553],{"class":731},[721,2725,887],{"class":731},[721,2727,2560],{"class":731},[721,2729,2680],{"class":2149},[721,2731,2553],{"class":731},[721,2733,1000],{"class":731},[721,2735,732],{"class":731},[721,2737,2560],{"class":731},[721,2739,2479],{"class":2691},[721,2741,2553],{"class":731},[721,2743,1000],{"class":731},[721,2745,732],{"class":731},[721,2747,2560],{"class":731},[721,2749,2750],{"class":876},"values",[721,2752,2553],{"class":731},[721,2754,1000],{"class":731},[721,2756,2653],{"class":731},[721,2758,2759,2762,2764,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805],{"class":723,"line":895},[721,2760,2761],{"class":731},"      {",[721,2763,2560],{"class":731},[721,2765,2663],{"class":2766},"su27w",[721,2768,2553],{"class":731},[721,2770,1000],{"class":731},[721,2772,2560],{"class":731},[721,2774,2514],{"class":748},[721,2776,2553],{"class":731},[721,2778,887],{"class":731},[721,2780,2560],{"class":731},[721,2782,2680],{"class":2766},[721,2784,2553],{"class":731},[721,2786,1000],{"class":731},[721,2788,732],{"class":731},[721,2790,2560],{"class":731},[721,2792,2483],{"class":836},[721,2794,2553],{"class":731},[721,2796,1000],{"class":731},[721,2798,2560],{"class":731},[721,2800,2629],{"class":748},[721,2802,2553],{"class":731},[721,2804,739],{"class":731},[721,2806,2639],{"class":731},[721,2808,2809,2811,2813,2815,2817,2819,2821,2824,2826,2828,2830,2832,2834,2836,2838,2840,2842,2844,2846,2848,2851,2853,2855],{"class":723,"line":1013},[721,2810,2761],{"class":731},[721,2812,2560],{"class":731},[721,2814,2663],{"class":2766},[721,2816,2553],{"class":731},[721,2818,1000],{"class":731},[721,2820,2560],{"class":731},[721,2822,2823],{"class":748},"plan",[721,2825,2553],{"class":731},[721,2827,887],{"class":731},[721,2829,2560],{"class":731},[721,2831,2680],{"class":2766},[721,2833,2553],{"class":731},[721,2835,1000],{"class":731},[721,2837,732],{"class":731},[721,2839,2560],{"class":731},[721,2841,2483],{"class":836},[721,2843,2553],{"class":731},[721,2845,1000],{"class":731},[721,2847,2560],{"class":731},[721,2849,2850],{"class":748},"premium",[721,2852,2553],{"class":731},[721,2854,739],{"class":731},[721,2856,2857],{"class":731}," }\n",[721,2859,2860,2863,2865,2867],{"class":723,"line":1028},[721,2861,2862],{"class":731},"    ]",[721,2864,739],{"class":731},[721,2866,739],{"class":731},[721,2868,2857],{"class":731},[721,2870,2871],{"class":723,"line":1774},[721,2872,2873],{"class":731},"  ]\n",[721,2875,2876],{"class":723,"line":1779},[721,2877,2878],{"class":731},"}\n",[710,2880,2882],{"className":2534,"code":2881,"filename":2510,"language":2475,"meta":716,"style":716},"{\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",[718,2883,2884,2888,2917,2929,2977,3025,3074,3078],{"__ignoreMap":716},[721,2885,2886],{"class":723,"line":724},[721,2887,992],{"class":731},[721,2889,2890,2892,2894,2896,2898,2900,2902,2904,2906,2908,2910,2913,2915],{"class":723,"line":801},[721,2891,2547],{"class":731},[721,2893,2550],{"class":852},[721,2895,2553],{"class":731},[721,2897,1000],{"class":731},[721,2899,732],{"class":731},[721,2901,2560],{"class":731},[721,2903,2483],{"class":2149},[721,2905,2553],{"class":731},[721,2907,1000],{"class":731},[721,2909,2560],{"class":731},[721,2911,2912],{"class":748},"POST \u002Fapi\u002Fcheckout (500)",[721,2914,2553],{"class":731},[721,2916,2639],{"class":731},[721,2918,2919,2921,2923,2925,2927],{"class":723,"line":820},[721,2920,2547],{"class":731},[721,2922,2646],{"class":852},[721,2924,2553],{"class":731},[721,2926,1000],{"class":731},[721,2928,2653],{"class":731},[721,2930,2931,2933,2935,2937,2939,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2961,2963,2965,2967,2969,2971,2973,2975],{"class":723,"line":827},[721,2932,2658],{"class":731},[721,2934,2560],{"class":731},[721,2936,2663],{"class":2149},[721,2938,2553],{"class":731},[721,2940,1000],{"class":731},[721,2942,2560],{"class":731},[721,2944,2593],{"class":748},[721,2946,2553],{"class":731},[721,2948,887],{"class":731},[721,2950,2560],{"class":731},[721,2952,2680],{"class":2149},[721,2954,2553],{"class":731},[721,2956,1000],{"class":731},[721,2958,732],{"class":731},[721,2960,2560],{"class":731},[721,2962,2483],{"class":2691},[721,2964,2553],{"class":731},[721,2966,1000],{"class":731},[721,2968,2560],{"class":731},[721,2970,2602],{"class":748},[721,2972,2553],{"class":731},[721,2974,739],{"class":731},[721,2976,2639],{"class":731},[721,2978,2979,2981,2983,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019,3021,3023],{"class":723,"line":859},[721,2980,2658],{"class":731},[721,2982,2560],{"class":731},[721,2984,2663],{"class":2149},[721,2986,2553],{"class":731},[721,2988,1000],{"class":731},[721,2990,2560],{"class":731},[721,2992,2506],{"class":748},[721,2994,2553],{"class":731},[721,2996,887],{"class":731},[721,2998,2560],{"class":731},[721,3000,2680],{"class":2149},[721,3002,2553],{"class":731},[721,3004,1000],{"class":731},[721,3006,732],{"class":731},[721,3008,2560],{"class":731},[721,3010,2483],{"class":2691},[721,3012,2553],{"class":731},[721,3014,1000],{"class":731},[721,3016,2560],{"class":731},[721,3018,2629],{"class":748},[721,3020,2553],{"class":731},[721,3022,739],{"class":731},[721,3024,2639],{"class":731},[721,3026,3027,3029,3031,3033,3035,3037,3039,3042,3044,3046,3048,3050,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070,3072],{"class":723,"line":895},[721,3028,2658],{"class":731},[721,3030,2560],{"class":731},[721,3032,2663],{"class":2149},[721,3034,2553],{"class":731},[721,3036,1000],{"class":731},[721,3038,2560],{"class":731},[721,3040,3041],{"class":748},"user.plan",[721,3043,2553],{"class":731},[721,3045,887],{"class":731},[721,3047,2560],{"class":731},[721,3049,2680],{"class":2149},[721,3051,2553],{"class":731},[721,3053,1000],{"class":731},[721,3055,732],{"class":731},[721,3057,2560],{"class":731},[721,3059,2483],{"class":2691},[721,3061,2553],{"class":731},[721,3063,1000],{"class":731},[721,3065,2560],{"class":731},[721,3067,2850],{"class":748},[721,3069,2553],{"class":731},[721,3071,739],{"class":731},[721,3073,2857],{"class":731},[721,3075,3076],{"class":723,"line":1013},[721,3077,2873],{"class":731},[721,3079,3080],{"class":723,"line":1028},[721,3081,2878],{"class":731},[609,3083,3084,3086],{},[718,3085,2510],{}," is worth switching to when your backend charges by ingested volume or facets on attributes:",[613,3088,3089,3098],{},[616,3090,3091,3094,3095,3097],{},[619,3092,3093],{},"The body is a one-line summary",": ",[718,3096,2912],{},", 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.",[616,3099,3100,3103,3104],{},[619,3101,3102],{},"Nested fields become dotted attributes",", so each leaf is its own facet:",[710,3105,3108],{"className":712,"code":3106,"filename":3107,"language":715,"meta":716,"style":716},"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",[718,3109,3110,3139,3143,3194],{"__ignoreMap":716},[721,3111,3112,3114,3116,3118,3120,3122,3124,3127,3129,3131,3133,3135,3137],{"class":723,"line":724},[721,3113,1666],{"class":852},[721,3115,1669],{"class":735},[721,3117,776],{"class":731},[721,3119,736],{"class":836},[721,3121,840],{"class":735},[721,3123,1079],{"class":731},[721,3125,3126],{"class":876}," recordShape",[721,3128,1000],{"class":731},[721,3130,745],{"class":731},[721,3132,2510],{"class":748},[721,3134,879],{"class":731},[721,3136,739],{"class":731},[721,3138,901],{"class":735},[721,3140,3141],{"class":723,"line":801},[721,3142,824],{"emptyLinePlaceholder":823},[721,3144,3145,3148,3150,3153,3155,3157,3160,3162,3164,3167,3169,3171,3173,3175,3177,3180,3182,3184,3186,3188,3190,3192],{"class":723,"line":820},[721,3146,3147],{"class":735},"log",[721,3149,865],{"class":731},[721,3151,3152],{"class":836},"set",[721,3154,840],{"class":735},[721,3156,1079],{"class":731},[721,3158,3159],{"class":876}," user",[721,3161,1000],{"class":731},[721,3163,732],{"class":731},[721,3165,3166],{"class":876}," id",[721,3168,1000],{"class":731},[721,3170,745],{"class":731},[721,3172,2629],{"class":748},[721,3174,879],{"class":731},[721,3176,887],{"class":731},[721,3178,3179],{"class":876}," plan",[721,3181,1000],{"class":731},[721,3183,745],{"class":731},[721,3185,2850],{"class":748},[721,3187,879],{"class":731},[721,3189,739],{"class":731},[721,3191,739],{"class":731},[721,3193,901],{"class":735},[721,3195,3196],{"class":723,"line":827},[721,3197,3198],{"class":797},"\u002F\u002F → user.id, user.plan\n",[609,3200,3201,3202,3204,3205,3208,3209,3212,3213,3216],{},"Only plain objects are walked. Arrays are sent as a single attribute, an ",[718,3203,2471],{}," when their elements share one primitive type and a JSON string otherwise. Indexing them, as ",[718,3206,3207],{},"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 ",[718,3210,3211],{},"Date",". An empty object stays a single ",[718,3214,3215],{},"{}"," attribute rather than disappearing.",[2296,3218,3219,3221,3222,3224],{"color":2298,"icon":13},[718,3220,2510],{}," 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 ",[718,3223,2475],{}," shape.",[757,3226,3228],{"id":3227},"semantic-conventions","Semantic Conventions",[609,3230,3231,3232,3235,3236,3241],{},"With ",[718,3233,3234],{},"semanticConventions: true",", each record also carries the ",[692,3237,3240],{"href":3238,"rel":3239},"https:\u002F\u002Fopentelemetry.io\u002Fdocs\u002Fspecs\u002Fsemconv\u002F",[696],"OpenTelemetry semantic convention"," names for the fields evlog knows, so backends with built-in HTTP, error, and GenAI views pick them up. The evlog names stay, so existing queries keep working.",[1400,3243,3244,3254],{},[1403,3245,3246],{},[1406,3247,3248,3251],{},[1409,3249,3250],{},"evlog field",[1409,3252,3253],{},"Attribute",[1416,3255,3256,3267,3279,3291,3303,3327,3351,3369,3387],{},[1406,3257,3258,3262],{},[1421,3259,3260],{},[718,3261,2593],{},[1421,3263,3264],{},[718,3265,3266],{},"http.request.method",[1406,3268,3269,3274],{},[1421,3270,3271],{},[718,3272,3273],{},"path",[1421,3275,3276],{},[718,3277,3278],{},"url.path",[1406,3280,3281,3286],{},[1421,3282,3283],{},[718,3284,3285],{},"status",[1421,3287,3288],{},[718,3289,3290],{},"http.response.status_code",[1406,3292,3293,3298],{},[1421,3294,3295],{},[718,3296,3297],{},"userAgent.raw",[1421,3299,3300],{},[718,3301,3302],{},"user_agent.original",[1406,3304,3305,3316],{},[1421,3306,3307,2337,3310,2337,3313],{},[718,3308,3309],{},"error.name",[718,3311,3312],{},"error.message",[718,3314,3315],{},"error.stack",[1421,3317,3318,2337,3321,2337,3324],{},[718,3319,3320],{},"exception.type",[718,3322,3323],{},"exception.message",[718,3325,3326],{},"exception.stacktrace",[1406,3328,3329,3340],{},[1421,3330,3331,2337,3334,2337,3337],{},[718,3332,3333],{},"ai.model",[718,3335,3336],{},"ai.provider",[718,3338,3339],{},"ai.responseId",[1421,3341,3342,2337,3345,2337,3348],{},[718,3343,3344],{},"gen_ai.request.model",[718,3346,3347],{},"gen_ai.provider.name",[718,3349,3350],{},"gen_ai.response.id",[1406,3352,3353,3361],{},[1421,3354,3355,2337,3358],{},[718,3356,3357],{},"ai.inputTokens",[718,3359,3360],{},"ai.outputTokens",[1421,3362,3363,2337,3366],{},[718,3364,3365],{},"gen_ai.usage.input_tokens",[718,3367,3368],{},"gen_ai.usage.output_tokens",[1406,3370,3371,3379],{},[1421,3372,3373,2337,3376],{},[718,3374,3375],{},"ai.cacheReadTokens",[718,3377,3378],{},"ai.cacheWriteTokens",[1421,3380,3381,2337,3384],{},[718,3382,3383],{},"gen_ai.usage.cache_read.input_tokens",[718,3385,3386],{},"gen_ai.usage.cache_creation.input_tokens",[1406,3388,3389,3394],{},[1421,3390,3391],{},[718,3392,3393],{},"ai.finishReason",[1421,3395,3396],{},[718,3397,3398],{},"gen_ai.response.finish_reasons",[609,3400,3401,3402,3404],{},"A field is mapped only when it has the type the convention requires, and an attribute the event already sets under that name is not overwritten. The resource also gets ",[718,3403,2377],{},". The option becomes the default in the next major.",[757,3406,3408],{"id":3407},"protobuf","Protobuf",[609,3410,3231,3411,3414,3415,3418,3419,3421],{},[718,3412,3413],{},"protocol: 'http\u002Fprotobuf'",", the adapter sends the same request as binary protobuf with ",[718,3416,3417],{},"Content-Type: application\u002Fx-protobuf",". Use it for collectors and gateways that only accept protobuf, or to shrink the payload. The encoder ships with evlog, has no dependencies, and is only loaded when this protocol is selected, so ",[718,3420,749],{}," stays the same size for JSON users.",[710,3423,3425],{"className":712,"code":3424,"filename":1659,"language":715,"meta":716,"style":716},"const drain = createOTLPDrain({\n  endpoint: 'http:\u002F\u002Flocalhost:4318',\n  protocol: 'http\u002Fprotobuf',\n  compression: 'gzip',\n})\n",[718,3426,3427,3441,3455,3470,3485],{"__ignoreMap":716},[721,3428,3429,3431,3433,3435,3437,3439],{"class":723,"line":724},[721,3430,1666],{"class":852},[721,3432,1669],{"class":735},[721,3434,776],{"class":731},[721,3436,736],{"class":836},[721,3438,840],{"class":735},[721,3440,992],{"class":731},[721,3442,3443,3445,3447,3449,3451,3453],{"class":723,"line":801},[721,3444,1682],{"class":876},[721,3446,1000],{"class":731},[721,3448,745],{"class":731},[721,3450,1430],{"class":748},[721,3452,879],{"class":731},[721,3454,1010],{"class":731},[721,3456,3457,3460,3462,3464,3466,3468],{"class":723,"line":820},[721,3458,3459],{"class":876},"  protocol",[721,3461,1000],{"class":731},[721,3463,745],{"class":731},[721,3465,1517],{"class":748},[721,3467,879],{"class":731},[721,3469,1010],{"class":731},[721,3471,3472,3475,3477,3479,3481,3483],{"class":723,"line":827},[721,3473,3474],{"class":876},"  compression",[721,3476,1000],{"class":731},[721,3478,745],{"class":731},[721,3480,1493],{"class":748},[721,3482,879],{"class":731},[721,3484,1010],{"class":731},[721,3486,3487,3489],{"class":723,"line":859},[721,3488,898],{"class":731},[721,3490,901],{"class":735},[609,3492,3493,3494,3497,3498,865],{},"To encode a request yourself, ",[718,3495,3496],{},"evlog\u002Fotlp\u002Fprotobuf"," exports ",[718,3499,3500],{},"encodeOTLPLogsRequest()",[757,3502,3504],{"id":3503},"severity-mapping","Severity Mapping",[1400,3506,3507,3520],{},[1403,3508,3509],{},[1406,3510,3511,3514,3517],{},[1409,3512,3513],{},"evlog Level",[1409,3515,3516],{},"OTLP Severity Number",[1409,3518,3519],{},"OTLP Severity Text",[1416,3521,3522,3535,3547,3559,3572,3585],{},[1406,3523,3524,3529,3532],{},[1421,3525,3526],{},[718,3527,3528],{},"trace",[1421,3530,3531],{},"1",[1421,3533,3534],{},"TRACE",[1406,3536,3537,3541,3544],{},[1421,3538,3539],{},[718,3540,2136],{},[1421,3542,3543],{},"5",[1421,3545,3546],{},"DEBUG",[1406,3548,3549,3553,3556],{},[1421,3550,3551],{},[718,3552,2298],{},[1421,3554,3555],{},"9",[1421,3557,3558],{},"INFO",[1406,3560,3561,3566,3569],{},[1421,3562,3563],{},[718,3564,3565],{},"warn",[1421,3567,3568],{},"13",[1421,3570,3571],{},"WARN",[1406,3573,3574,3579,3582],{},[1421,3575,3576],{},[718,3577,3578],{},"error",[1421,3580,3581],{},"17",[1421,3583,3584],{},"ERROR",[1406,3586,3587,3592,3595],{},[1421,3588,3589],{},[718,3590,3591],{},"fatal",[1421,3593,3594],{},"21",[1421,3596,3597],{},"FATAL",[703,3599,3601],{"id":3600},"troubleshooting","Troubleshooting",[757,3603,3605],{"id":3604},"missing-endpoint-error","Missing endpoint error",[710,3607,3613],{"className":3608,"code":3610,"filename":3611,"language":3612,"meta":716},[3609],"language-text","[evlog\u002Fotlp] Missing endpoint. Set OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_ENDPOINT\n","Console","text",[718,3614,3610],{"__ignoreMap":716},[609,3616,3617],{},"Make sure your endpoint environment variable is set and the server was restarted.",[757,3619,3621],{"id":3620},"_401-unauthorized","401 Unauthorized",[609,3623,3624],{},"Your authentication headers may be missing or incorrect. Check:",[665,3626,3627,3633,3636],{},[616,3628,3629,3630,3632],{},"The ",[718,3631,1452],{}," format is correct",[616,3634,3635],{},"Credentials are valid and not expired",[616,3637,3638],{},"The endpoint URL is correct",[757,3640,3642],{"id":3641},"_404-not-found","404 Not Found",[609,3644,3645,3646,3648],{},"The adapter sends to ",[718,3647,1465],{},". Make sure your endpoint:",[613,3650,3651,3656],{},[616,3652,3653,3654],{},"Supports OTLP HTTP (not gRPC). For a protobuf-only receiver, set ",[718,3655,3413],{},[616,3657,3658,3659,3661],{},"Is the base URL without ",[718,3660,1465],{}," suffix",[757,3663,3665],{"id":3664},"logs-not-appearing","Logs not appearing",[665,3667,3668,3675,3678],{},[616,3669,3670,3671,3674],{},"Check the server console for ",[718,3672,3673],{},"[evlog\u002Fotlp]"," error messages",[616,3676,3677],{},"Test with a local collector first to verify the format",[616,3679,3680],{},"Check your backend's ingestion delay (some have 1-2 minute delays)",[703,3682,3684],{"id":3683},"direct-api-usage","Direct API Usage",[609,3686,3687],{},"For advanced use cases:",[710,3689,3692],{"className":712,"code":3690,"filename":3691,"language":715,"meta":716,"style":716},"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",[718,3693,3694,3723,3727,3732,3745,3759,3765,3769,3774,3787,3801,3807,3811,3816],{"__ignoreMap":716},[721,3695,3696,3698,3700,3703,3705,3708,3710,3713,3715,3717,3719,3721],{"class":723,"line":724},[721,3697,728],{"class":727},[721,3699,732],{"class":731},[721,3701,3702],{"class":735}," sendToOTLP",[721,3704,887],{"class":731},[721,3706,3707],{"class":735}," sendBatchToOTLP",[721,3709,887],{"class":731},[721,3711,3712],{"class":735}," toOTLPLogRecord",[721,3714,739],{"class":731},[721,3716,742],{"class":727},[721,3718,745],{"class":731},[721,3720,749],{"class":748},[721,3722,752],{"class":731},[721,3724,3725],{"class":723,"line":801},[721,3726,824],{"emptyLinePlaceholder":823},[721,3728,3729],{"class":723,"line":820},[721,3730,3731],{"class":797},"\u002F\u002F Send a single event\n",[721,3733,3734,3736,3738,3741,3743],{"class":723,"line":827},[721,3735,1180],{"class":727},[721,3737,3702],{"class":836},[721,3739,3740],{"class":735},"(event",[721,3742,887],{"class":731},[721,3744,856],{"class":731},[721,3746,3747,3749,3751,3753,3755,3757],{"class":723,"line":859},[721,3748,1682],{"class":876},[721,3750,1000],{"class":731},[721,3752,745],{"class":731},[721,3754,1430],{"class":748},[721,3756,879],{"class":731},[721,3758,1010],{"class":731},[721,3760,3761,3763],{"class":723,"line":895},[721,3762,898],{"class":731},[721,3764,901],{"class":735},[721,3766,3767],{"class":723,"line":1013},[721,3768,824],{"emptyLinePlaceholder":823},[721,3770,3771],{"class":723,"line":1028},[721,3772,3773],{"class":797},"\u002F\u002F Send multiple events\n",[721,3775,3776,3778,3780,3783,3785],{"class":723,"line":1774},[721,3777,1180],{"class":727},[721,3779,3707],{"class":836},[721,3781,3782],{"class":735},"(events",[721,3784,887],{"class":731},[721,3786,856],{"class":731},[721,3788,3789,3791,3793,3795,3797,3799],{"class":723,"line":1779},[721,3790,1682],{"class":876},[721,3792,1000],{"class":731},[721,3794,745],{"class":731},[721,3796,1430],{"class":748},[721,3798,879],{"class":731},[721,3800,1010],{"class":731},[721,3802,3803,3805],{"class":723,"line":2086},[721,3804,898],{"class":731},[721,3806,901],{"class":735},[721,3808,3809],{"class":723,"line":2093},[721,3810,824],{"emptyLinePlaceholder":823},[721,3812,3813],{"class":723,"line":2101},[721,3814,3815],{"class":797},"\u002F\u002F Convert event to OTLP format (for inspection)\n",[721,3817,3818,3820,3823,3825,3827],{"class":723,"line":2109},[721,3819,1666],{"class":852},[721,3821,3822],{"class":735}," otlpRecord ",[721,3824,776],{"class":731},[721,3826,3712],{"class":836},[721,3828,3829],{"class":735},"(event)\n",[703,3831,3833],{"id":3832},"next-steps","Next Steps",[613,3835,3836,3842,3848,3854],{},[616,3837,3838,3841],{},[692,3839,3840],{"href":162},"Axiom Adapter"," - Send logs to Axiom",[616,3843,3844,3847],{},[692,3845,3846],{"href":167},"PostHog Adapter"," - Send logs to PostHog",[616,3849,3850,3853],{},[692,3851,3852],{"href":530},"Custom Adapters"," - Build your own adapter",[616,3855,3856,3858],{},[692,3857,560],{"href":561}," - Security and production tips",[3860,3861,3862],"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}html pre.shiki code .su27w, html code.shiki .su27w{--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53}",{"title":716,"searchDepth":801,"depth":801,"links":3864},[3865,3866,3870,3876,3880,3886,3892,3893],{"id":705,"depth":801,"text":20},{"id":755,"depth":801,"text":25,"children":3867},[3868,3869],{"id":759,"depth":820,"text":760},{"id":782,"depth":820,"text":783},{"id":1365,"depth":801,"text":547,"children":3871},[3872,3873,3874,3875],{"id":1397,"depth":820,"text":1398},{"id":1582,"depth":820,"text":1583},{"id":1654,"depth":820,"text":1655},{"id":1786,"depth":820,"text":1787},{"id":1993,"depth":801,"text":1994,"children":3877},[3878,3879],{"id":2000,"depth":820,"text":2001},{"id":2206,"depth":820,"text":2207},{"id":2306,"depth":801,"text":2307,"children":3881},[3882,3883,3884,3885],{"id":2521,"depth":820,"text":2522},{"id":3227,"depth":820,"text":3228},{"id":3407,"depth":820,"text":3408},{"id":3503,"depth":820,"text":3504},{"id":3600,"depth":801,"text":3601,"children":3887},[3888,3889,3890,3891],{"id":3604,"depth":820,"text":3605},{"id":3620,"depth":820,"text":3621},{"id":3641,"depth":820,"text":3642},{"id":3664,"depth":820,"text":3665},{"id":3683,"depth":801,"text":3684},{"id":3832,"depth":801,"text":3833},"Send logs via OpenTelemetry Protocol (OTLP) to Grafana, Datadog, Honeycomb, and any compatible backend. Supports gRPC and HTTP transports.","md",[3897,3904],{"label":3898,"icon":3899,"to":3900,"target":3901,"color":3902,"variant":3903},"OpenTelemetry Docs","i-lucide-external-link","https:\u002F\u002Fopentelemetry.io\u002Fdocs\u002F","_blank","neutral","subtle",{"label":3852,"icon":344,"to":530,"color":3902,"variant":3903},{},{"title":201,"icon":204},{"title":604,"description":3894},"e9WuwcngnEJbjAuVfpnXJayRWu0VtXxcxVptSTu4UyQ",[3910,3912],{"title":196,"path":197,"stem":198,"description":3911,"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":3913,"icon":209,"children":-1},"Send wide events to HyperDX over OTLP\u002FHTTP, using its documented endpoint and authorization header. Configured from environment variables.",1791049466607]