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