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