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