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