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