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