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