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