[{"data":1,"prerenderedAt":1772},["ShallowReactive",2],{"navigation_docs":3,"-adapters-otlp":171,"-adapters-otlp-surround":1767},[4,30,55,105,122,136],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","/getting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","/getting-started/introduction","1.getting-started/1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","/getting-started/quick-start","1.getting-started/3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","/getting-started/agent-skills","1.getting-started/4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Core Concepts","/core-concepts","2.core-concepts",[35,40,45,50],{"title":36,"path":37,"stem":38,"icon":39},"Wide Events","/core-concepts/wide-events","2.core-concepts/1.wide-events","i-lucide-layers",{"title":41,"path":42,"stem":43,"icon":44},"Structured Errors","/core-concepts/structured-errors","2.core-concepts/2.structured-errors","i-lucide-shield-alert",{"title":46,"path":47,"stem":48,"icon":49},"Best Practices","/core-concepts/best-practices","2.core-concepts/3.best-practices","i-lucide-shield-check",{"title":51,"path":52,"stem":53,"icon":54},"Typed Fields","/core-concepts/typed-fields","2.core-concepts/4.typed-fields","i-simple-icons-typescript",{"title":56,"path":57,"stem":58,"children":59,"page":29},"Adapters","/adapters","3.adapters",[60,65,70,75,80,85,90,95,100],{"title":61,"path":62,"stem":63,"icon":64},"Overview","/adapters/overview","3.adapters/1.overview","i-custom-plug",{"title":66,"path":67,"stem":68,"icon":69},"Axiom","/adapters/axiom","3.adapters/2.axiom","i-custom-axiom",{"title":71,"path":72,"stem":73,"icon":74},"OTLP","/adapters/otlp","3.adapters/3.otlp","i-simple-icons-opentelemetry",{"title":76,"path":77,"stem":78,"icon":79},"PostHog","/adapters/posthog","3.adapters/4.posthog","i-simple-icons-posthog",{"title":81,"path":82,"stem":83,"icon":84},"Sentry","/adapters/sentry","3.adapters/5.sentry","i-simple-icons-sentry",{"title":86,"path":87,"stem":88,"icon":89},"Better Stack","/adapters/better-stack","3.adapters/6.better-stack","i-simple-icons-betterstack",{"title":91,"path":92,"stem":93,"icon":94},"Custom Adapters","/adapters/custom","3.adapters/7.custom","i-lucide-code",{"title":96,"path":97,"stem":98,"icon":99},"Pipeline","/adapters/pipeline","3.adapters/8.pipeline","i-lucide-workflow",{"title":101,"path":102,"stem":103,"icon":104},"Browser","/adapters/browser","3.adapters/9.browser","i-lucide-globe",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Enrichers","/enrichers","4.enrichers",[110,113,118],{"title":61,"path":111,"stem":112,"icon":28},"/enrichers/overview","4.enrichers/1.overview",{"title":114,"path":115,"stem":116,"icon":117},"Built-in","/enrichers/built-in","4.enrichers/2.built-in","i-lucide-puzzle",{"title":119,"path":120,"stem":121,"icon":94},"Custom","/enrichers/custom","4.enrichers/3.custom",{"title":123,"path":124,"stem":125,"children":126,"page":29},"NuxtHub","/nuxthub","5.nuxthub",[127,131],{"title":61,"path":128,"stem":129,"icon":130},"/nuxthub/overview","5.nuxthub/1.overview","i-lucide-database",{"title":132,"path":133,"stem":134,"icon":135},"Retention","/nuxthub/retention","5.nuxthub/2.retention","i-lucide-clock",{"title":137,"path":138,"stem":139,"children":140,"page":29},"Examples","/examples","6.examples",[141,146,151,156,161,166],{"title":142,"path":143,"stem":144,"icon":145},"Next.js","/examples/nextjs","6.examples/1.nextjs","i-simple-icons-nextdotjs",{"title":147,"path":148,"stem":149,"icon":150},"TanStack Start","/examples/tanstack-start","6.examples/2.tanstack-start","i-custom-tanstack",{"title":152,"path":153,"stem":154,"icon":155},"Hono","/examples/hono","6.examples/3.hono","i-simple-icons-hono",{"title":157,"path":158,"stem":159,"icon":160},"Express","/examples/express","6.examples/4.express","i-simple-icons-express",{"title":162,"path":163,"stem":164,"icon":165},"Elysia","/examples/elysia","6.examples/5.elysia","i-custom-elysia",{"title":167,"path":168,"stem":169,"icon":170},"Fastify","/examples/fastify","6.examples/6.fastify","i-simple-icons-fastify",{"id":172,"title":173,"body":174,"description":1752,"extension":1753,"links":1754,"meta":1763,"navigation":1764,"path":72,"seo":1765,"stem":73,"__hash__":1766},"docs/3.adapters/3.otlp.md","OTLP Adapter",{"type":175,"value":176,"toc":1723},"minimark",[177,181,222,226,229,273,276,281,300,304,411,415,418,459,463,532,535,577,581,654,658,852,856,967,971,974,995,1022,1031,1034,1062,1066,1069,1200,1249,1261,1265,1268,1386,1390,1457,1461,1465,1473,1476,1480,1483,1497,1501,1508,1519,1523,1538,1542,1545,1690,1694,1719],[178,179,180],"p",{},"The OTLP (OpenTelemetry Protocol) adapter sends logs in the standard OpenTelemetry format. This works with any OTLP-compatible backend including:",[182,183,184,192,197,202,207,212,217],"ul",{},[185,186,187,191],"li",{},[188,189,190],"strong",{},"Grafana Cloud"," (Loki)",[185,193,194],{},[188,195,196],{},"Datadog",[185,198,199],{},[188,200,201],{},"Honeycomb",[185,203,204],{},[188,205,206],{},"Jaeger",[185,208,209],{},[188,210,211],{},"Splunk",[185,213,214],{},[188,215,216],{},"New Relic",[185,218,219],{},[188,220,221],{},"Self-hosted OpenTelemetry Collector",[223,224,15],"h2",{"id":225},"installation",[178,227,228],{},"The OTLP adapter comes bundled with evlog:",[230,231,237],"pre",{"className":232,"code":233,"filename":234,"language":235,"meta":236,"style":236},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createOTLPDrain } from 'evlog/otlp'\n","server/plugins/evlog-drain.ts","typescript","",[238,239,240],"code",{"__ignoreMap":236},[241,242,245,249,253,257,260,263,266,270],"span",{"class":243,"line":244},"line",1,[241,246,248],{"class":247},"s7zQu","import",[241,250,252],{"class":251},"sMK4o"," {",[241,254,256],{"class":255},"sTEyZ"," createOTLPDrain",[241,258,259],{"class":251}," }",[241,261,262],{"class":247}," from",[241,264,265],{"class":251}," '",[241,267,269],{"class":268},"sfazB","evlog/otlp",[241,271,272],{"class":251},"'\n",[223,274,20],{"id":275},"quick-start",[277,278,280],"h3",{"id":279},"_1-set-your-otlp-endpoint","1. Set your OTLP endpoint",[230,282,287],{"className":283,"code":284,"filename":285,"language":286,"meta":236,"style":236},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","NUXT_OTLP_ENDPOINT=http://localhost:4318\n",".env","bash",[238,288,289],{"__ignoreMap":236},[241,290,291,294,297],{"class":243,"line":244},[241,292,293],{"class":255},"NUXT_OTLP_ENDPOINT",[241,295,296],{"class":251},"=",[241,298,299],{"class":268},"http://localhost:4318\n",[277,301,303],{"id":302},"_2-create-the-drain-plugin","2. Create the drain plugin",[230,305,307],{"className":232,"code":306,"filename":234,"language":235,"meta":236,"style":236},"import { createOTLPDrain } from 'evlog/otlp'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createOTLPDrain())\n})\n",[238,308,309,327,334,366,402],{"__ignoreMap":236},[241,310,311,313,315,317,319,321,323,325],{"class":243,"line":244},[241,312,248],{"class":247},[241,314,252],{"class":251},[241,316,256],{"class":255},[241,318,259],{"class":251},[241,320,262],{"class":247},[241,322,265],{"class":251},[241,324,269],{"class":268},[241,326,272],{"class":251},[241,328,330],{"class":243,"line":329},2,[241,331,333],{"emptyLinePlaceholder":332},true,"\n",[241,335,337,340,343,347,350,352,356,359,363],{"class":243,"line":336},3,[241,338,339],{"class":247},"export",[241,341,342],{"class":247}," default",[241,344,346],{"class":345},"s2Zo4"," defineNitroPlugin",[241,348,349],{"class":255},"(",[241,351,349],{"class":251},[241,353,355],{"class":354},"sHdIc","nitroApp",[241,357,358],{"class":251},")",[241,360,362],{"class":361},"spNyl"," =>",[241,364,365],{"class":251}," {\n",[241,367,369,372,375,378,380,383,386,389,392,394,397,399],{"class":243,"line":368},4,[241,370,371],{"class":255},"  nitroApp",[241,373,374],{"class":251},".",[241,376,377],{"class":255},"hooks",[241,379,374],{"class":251},[241,381,382],{"class":345},"hook",[241,384,349],{"class":385},"swJcz",[241,387,388],{"class":251},"'",[241,390,391],{"class":268},"evlog:drain",[241,393,388],{"class":251},[241,395,396],{"class":251},",",[241,398,256],{"class":345},[241,400,401],{"class":385},"())\n",[241,403,405,408],{"class":243,"line":404},5,[241,406,407],{"class":251},"}",[241,409,410],{"class":255},")\n",[223,412,414],{"id":413},"configuration","Configuration",[178,416,417],{},"The adapter reads configuration from multiple sources (highest priority first):",[419,420,421,430,439,446],"ol",{},[185,422,423,426,427],{},[188,424,425],{},"Overrides"," passed to ",[238,428,429],{},"createOTLPDrain()",[185,431,432,435,436],{},[188,433,434],{},"Runtime config"," at ",[238,437,438],{},"runtimeConfig.evlog.otlp",[185,440,441,435,443],{},[188,442,434],{},[238,444,445],{},"runtimeConfig.otlp",[185,447,448,451,452,455,456,358],{},[188,449,450],{},"Environment variables"," (",[238,453,454],{},"NUXT_OTLP_*"," or ",[238,457,458],{},"OTEL_*",[277,460,462],{"id":461},"environment-variables","Environment Variables",[464,465,466,479],"table",{},[467,468,469],"thead",{},[470,471,472,476],"tr",{},[473,474,475],"th",{},"Variable",[473,477,478],{},"Description",[480,481,482,495,505,518],"tbody",{},[470,483,484,489],{},[485,486,487],"td",{},[238,488,293],{},[485,490,491,492,358],{},"OTLP HTTP endpoint (e.g., ",[238,493,494],{},"http://localhost:4318",[470,496,497,502],{},[485,498,499],{},[238,500,501],{},"NUXT_OTLP_SERVICE_NAME",[485,503,504],{},"Override service name",[470,506,507,512],{},[485,508,509],{},[238,510,511],{},"NUXT_OTLP_HEADERS",[485,513,514,515,358],{},"Custom headers (format: ",[238,516,517],{},"Key=Value,Key2=Value2",[470,519,520,525],{},[485,521,522],{},[238,523,524],{},"NUXT_OTLP_AUTH",[485,526,527,528,531],{},"Shortcut for ",[238,529,530],{},"Authorization"," header",[178,533,534],{},"Standard OpenTelemetry variables are also supported:",[464,536,537,545],{},[467,538,539],{},[470,540,541,543],{},[473,542,475],{},[473,544,478],{},[480,546,547,557,567],{},[470,548,549,554],{},[485,550,551],{},[238,552,553],{},"OTEL_EXPORTER_OTLP_ENDPOINT",[485,555,556],{},"OTLP endpoint (fallback)",[470,558,559,564],{},[485,560,561],{},[238,562,563],{},"OTEL_EXPORTER_OTLP_HEADERS",[485,565,566],{},"Headers in OTEL format",[470,568,569,574],{},[485,570,571],{},[238,572,573],{},"OTEL_SERVICE_NAME",[485,575,576],{},"Service name (fallback)",[277,578,580],{"id":579},"runtime-config","Runtime Config",[230,582,585],{"className":232,"code":583,"filename":584,"language":235,"meta":236,"style":236},"export default defineNuxtConfig({\n  runtimeConfig: {\n    otlp: {\n      endpoint: '', // Set via NUXT_OTLP_ENDPOINT\n    },\n  },\n})\n","nuxt.config.ts",[238,586,587,601,611,620,636,641,647],{"__ignoreMap":236},[241,588,589,591,593,596,598],{"class":243,"line":244},[241,590,339],{"class":247},[241,592,342],{"class":247},[241,594,595],{"class":345}," defineNuxtConfig",[241,597,349],{"class":255},[241,599,600],{"class":251},"{\n",[241,602,603,606,609],{"class":243,"line":329},[241,604,605],{"class":385},"  runtimeConfig",[241,607,608],{"class":251},":",[241,610,365],{"class":251},[241,612,613,616,618],{"class":243,"line":336},[241,614,615],{"class":385},"    otlp",[241,617,608],{"class":251},[241,619,365],{"class":251},[241,621,622,625,627,630,632],{"class":243,"line":368},[241,623,624],{"class":385},"      endpoint",[241,626,608],{"class":251},[241,628,629],{"class":251}," ''",[241,631,396],{"class":251},[241,633,635],{"class":634},"sHwdD"," // Set via NUXT_OTLP_ENDPOINT\n",[241,637,638],{"class":243,"line":404},[241,639,640],{"class":251},"    },\n",[241,642,644],{"class":243,"line":643},6,[241,645,646],{"class":251},"  },\n",[241,648,650,652],{"class":243,"line":649},7,[241,651,407],{"class":251},[241,653,410],{"class":255},[277,655,657],{"id":656},"override-options","Override Options",[230,659,661],{"className":232,"code":660,"filename":234,"language":235,"meta":236,"style":236},"import { createOTLPDrain } from 'evlog/otlp'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createOTLPDrain({\n    endpoint: 'http://localhost:4318',\n    serviceName: 'my-api',\n    headers: {\n      'Authorization': 'Bearer xxx',\n    },\n    resourceAttributes: {\n      'deployment.environment': 'staging',\n    },\n  }))\n})\n",[238,662,663,681,685,705,733,749,765,774,795,800,810,831,836,845],{"__ignoreMap":236},[241,664,665,667,669,671,673,675,677,679],{"class":243,"line":244},[241,666,248],{"class":247},[241,668,252],{"class":251},[241,670,256],{"class":255},[241,672,259],{"class":251},[241,674,262],{"class":247},[241,676,265],{"class":251},[241,678,269],{"class":268},[241,680,272],{"class":251},[241,682,683],{"class":243,"line":329},[241,684,333],{"emptyLinePlaceholder":332},[241,686,687,689,691,693,695,697,699,701,703],{"class":243,"line":336},[241,688,339],{"class":247},[241,690,342],{"class":247},[241,692,346],{"class":345},[241,694,349],{"class":255},[241,696,349],{"class":251},[241,698,355],{"class":354},[241,700,358],{"class":251},[241,702,362],{"class":361},[241,704,365],{"class":251},[241,706,707,709,711,713,715,717,719,721,723,725,727,729,731],{"class":243,"line":368},[241,708,371],{"class":255},[241,710,374],{"class":251},[241,712,377],{"class":255},[241,714,374],{"class":251},[241,716,382],{"class":345},[241,718,349],{"class":385},[241,720,388],{"class":251},[241,722,391],{"class":268},[241,724,388],{"class":251},[241,726,396],{"class":251},[241,728,256],{"class":345},[241,730,349],{"class":385},[241,732,600],{"class":251},[241,734,735,738,740,742,744,746],{"class":243,"line":404},[241,736,737],{"class":385},"    endpoint",[241,739,608],{"class":251},[241,741,265],{"class":251},[241,743,494],{"class":268},[241,745,388],{"class":251},[241,747,748],{"class":251},",\n",[241,750,751,754,756,758,761,763],{"class":243,"line":643},[241,752,753],{"class":385},"    serviceName",[241,755,608],{"class":251},[241,757,265],{"class":251},[241,759,760],{"class":268},"my-api",[241,762,388],{"class":251},[241,764,748],{"class":251},[241,766,767,770,772],{"class":243,"line":649},[241,768,769],{"class":385},"    headers",[241,771,608],{"class":251},[241,773,365],{"class":251},[241,775,777,780,782,784,786,788,791,793],{"class":243,"line":776},8,[241,778,779],{"class":251},"      '",[241,781,530],{"class":385},[241,783,388],{"class":251},[241,785,608],{"class":251},[241,787,265],{"class":251},[241,789,790],{"class":268},"Bearer xxx",[241,792,388],{"class":251},[241,794,748],{"class":251},[241,796,798],{"class":243,"line":797},9,[241,799,640],{"class":251},[241,801,803,806,808],{"class":243,"line":802},10,[241,804,805],{"class":385},"    resourceAttributes",[241,807,608],{"class":251},[241,809,365],{"class":251},[241,811,813,815,818,820,822,824,827,829],{"class":243,"line":812},11,[241,814,779],{"class":251},[241,816,817],{"class":385},"deployment.environment",[241,819,388],{"class":251},[241,821,608],{"class":251},[241,823,265],{"class":251},[241,825,826],{"class":268},"staging",[241,828,388],{"class":251},[241,830,748],{"class":251},[241,832,834],{"class":243,"line":833},12,[241,835,640],{"class":251},[241,837,839,842],{"class":243,"line":838},13,[241,840,841],{"class":251},"  }",[241,843,844],{"class":385},"))\n",[241,846,848,850],{"class":243,"line":847},14,[241,849,407],{"class":251},[241,851,410],{"class":255},[277,853,855],{"id":854},"full-configuration-reference","Full Configuration Reference",[464,857,858,873],{},[467,859,860],{},[470,861,862,865,868,871],{},[473,863,864],{},"Option",[473,866,867],{},"Type",[473,869,870],{},"Default",[473,872,478],{},[480,874,875,893,914,931,947],{},[470,876,877,882,887,890],{},[485,878,879],{},[238,880,881],{},"endpoint",[485,883,884],{},[238,885,886],{},"string",[485,888,889],{},"-",[485,891,892],{},"OTLP HTTP endpoint (required)",[470,894,895,900,904,907],{},[485,896,897],{},[238,898,899],{},"serviceName",[485,901,902],{},[238,903,886],{},[485,905,906],{},"From event",[485,908,909,910,913],{},"Override ",[238,911,912],{},"service.name"," resource attribute",[470,915,916,921,926,928],{},[485,917,918],{},[238,919,920],{},"headers",[485,922,923],{},[238,924,925],{},"object",[485,927,889],{},[485,929,930],{},"Custom HTTP headers for authentication",[470,932,933,938,942,944],{},[485,934,935],{},[238,936,937],{},"resourceAttributes",[485,939,940],{},[238,941,925],{},[485,943,889],{},[485,945,946],{},"Additional OTLP resource attributes",[470,948,949,954,959,964],{},[485,950,951],{},[238,952,953],{},"timeout",[485,955,956],{},[238,957,958],{},"number",[485,960,961],{},[238,962,963],{},"5000",[485,965,966],{},"Request timeout in milliseconds",[223,968,970],{"id":969},"provider-specific-setup","Provider-Specific Setup",[277,972,190],{"id":973},"grafana-cloud",[419,975,976,979,992],{},[185,977,978],{},"Go to your Grafana Cloud portal",[185,980,981,982,985,986,985,989],{},"Navigate to ",[188,983,984],{},"Connections"," > ",[188,987,988],{},"Collector",[188,990,991],{},"OpenTelemetry",[185,993,994],{},"Copy your OTLP endpoint and generate credentials",[230,996,998],{"className":283,"code":997,"filename":285,"language":286,"meta":236,"style":236},"NUXT_OTLP_ENDPOINT=https://otlp-gateway-prod-us-central-0.grafana.net/otlp\nOTEL_EXPORTER_OTLP_HEADERS=Authorization=Basic%20base64-encoded-credentials\n",[238,999,1000,1009],{"__ignoreMap":236},[241,1001,1002,1004,1006],{"class":243,"line":244},[241,1003,293],{"class":255},[241,1005,296],{"class":251},[241,1007,1008],{"class":268},"https://otlp-gateway-prod-us-central-0.grafana.net/otlp\n",[241,1010,1011,1013,1015,1017,1019],{"class":243,"line":329},[241,1012,563],{"class":255},[241,1014,296],{"class":251},[241,1016,530],{"class":255},[241,1018,296],{"class":251},[241,1020,1021],{"class":268},"Basic%20base64-encoded-credentials\n",[1023,1024,1026,1027,1030],"callout",{"color":1025,"icon":13},"info","Grafana uses URL-encoded headers. The ",[238,1028,1029],{},"%20"," is a space character. The adapter automatically decodes this format.",[277,1032,196],{"id":1033},"datadog",[230,1035,1037],{"className":283,"code":1036,"filename":285,"language":286,"meta":236,"style":236},"NUXT_OTLP_ENDPOINT=https://http-intake.logs.datadoghq.com\nNUXT_OTLP_HEADERS=DD-API-KEY=your-api-key\n",[238,1038,1039,1048],{"__ignoreMap":236},[241,1040,1041,1043,1045],{"class":243,"line":244},[241,1042,293],{"class":255},[241,1044,296],{"class":251},[241,1046,1047],{"class":268},"https://http-intake.logs.datadoghq.com\n",[241,1049,1050,1052,1054,1057,1059],{"class":243,"line":329},[241,1051,511],{"class":255},[241,1053,296],{"class":251},[241,1055,1056],{"class":255},"DD-API-KEY",[241,1058,296],{"class":251},[241,1060,1061],{"class":268},"your-api-key\n",[277,1063,1065],{"id":1064},"local-opentelemetry-collector","Local OpenTelemetry Collector",[178,1067,1068],{},"For development and testing, run a local collector:",[230,1070,1075],{"className":1071,"code":1072,"filename":1073,"language":1074,"meta":236,"style":236},"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",[238,1076,1077,1085,1092,1099,1106,1116,1120,1127,1134,1144,1148,1155,1162,1169,1185],{"__ignoreMap":236},[241,1078,1079,1082],{"class":243,"line":244},[241,1080,1081],{"class":385},"receivers",[241,1083,1084],{"class":251},":\n",[241,1086,1087,1090],{"class":243,"line":329},[241,1088,1089],{"class":385},"  otlp",[241,1091,1084],{"class":251},[241,1093,1094,1097],{"class":243,"line":336},[241,1095,1096],{"class":385},"    protocols",[241,1098,1084],{"class":251},[241,1100,1101,1104],{"class":243,"line":368},[241,1102,1103],{"class":385},"      http",[241,1105,1084],{"class":251},[241,1107,1108,1111,1113],{"class":243,"line":404},[241,1109,1110],{"class":385},"        endpoint",[241,1112,608],{"class":251},[241,1114,1115],{"class":268}," 0.0.0.0:4318\n",[241,1117,1118],{"class":243,"line":643},[241,1119,333],{"emptyLinePlaceholder":332},[241,1121,1122,1125],{"class":243,"line":649},[241,1123,1124],{"class":385},"exporters",[241,1126,1084],{"class":251},[241,1128,1129,1132],{"class":243,"line":776},[241,1130,1131],{"class":385},"  debug",[241,1133,1084],{"class":251},[241,1135,1136,1139,1141],{"class":243,"line":797},[241,1137,1138],{"class":385},"    verbosity",[241,1140,608],{"class":251},[241,1142,1143],{"class":268}," detailed\n",[241,1145,1146],{"class":243,"line":802},[241,1147,333],{"emptyLinePlaceholder":332},[241,1149,1150,1153],{"class":243,"line":812},[241,1151,1152],{"class":385},"service",[241,1154,1084],{"class":251},[241,1156,1157,1160],{"class":243,"line":833},[241,1158,1159],{"class":385},"  pipelines",[241,1161,1084],{"class":251},[241,1163,1164,1167],{"class":243,"line":838},[241,1165,1166],{"class":385},"    logs",[241,1168,1084],{"class":251},[241,1170,1171,1174,1176,1179,1182],{"class":243,"line":847},[241,1172,1173],{"class":385},"      receivers",[241,1175,608],{"class":251},[241,1177,1178],{"class":251}," [",[241,1180,1181],{"class":268},"otlp",[241,1183,1184],{"class":251},"]\n",[241,1186,1188,1191,1193,1195,1198],{"class":243,"line":1187},15,[241,1189,1190],{"class":385},"      exporters",[241,1192,608],{"class":251},[241,1194,1178],{"class":251},[241,1196,1197],{"class":268},"debug",[241,1199,1184],{"class":251},[230,1201,1203],{"className":283,"code":1202,"language":286,"meta":236,"style":236},"docker run --rm -p 4318:4318 \\\n  -v $(pwd)/otel-collector.yaml:/etc/otelcol/config.yaml \\\n  otel/opentelemetry-collector:latest\n",[238,1204,1205,1226,1244],{"__ignoreMap":236},[241,1206,1207,1211,1214,1217,1220,1223],{"class":243,"line":244},[241,1208,1210],{"class":1209},"sBMFI","docker",[241,1212,1213],{"class":268}," run",[241,1215,1216],{"class":268}," --rm",[241,1218,1219],{"class":268}," -p",[241,1221,1222],{"class":268}," 4318:4318",[241,1224,1225],{"class":255}," \\\n",[241,1227,1228,1231,1234,1237,1239,1242],{"class":243,"line":329},[241,1229,1230],{"class":268},"  -v",[241,1232,1233],{"class":251}," $(",[241,1235,1236],{"class":345},"pwd",[241,1238,358],{"class":251},[241,1240,1241],{"class":268},"/otel-collector.yaml:/etc/otelcol/config.yaml",[241,1243,1225],{"class":255},[241,1245,1246],{"class":243,"line":336},[241,1247,1248],{"class":268},"  otel/opentelemetry-collector:latest\n",[230,1250,1251],{"className":283,"code":284,"filename":285,"language":286,"meta":236,"style":236},[238,1252,1253],{"__ignoreMap":236},[241,1254,1255,1257,1259],{"class":243,"line":244},[241,1256,293],{"class":255},[241,1258,296],{"class":251},[241,1260,299],{"class":268},[223,1262,1264],{"id":1263},"otlp-log-format","OTLP Log Format",[178,1266,1267],{},"evlog maps wide events to the OTLP log format:",[464,1269,1270,1280],{},[467,1271,1272],{},[470,1273,1274,1277],{},[473,1275,1276],{},"evlog Field",[473,1278,1279],{},"OTLP Field",[480,1281,1282,1298,1310,1321,1332,1344,1356,1367,1378],{},[470,1283,1284,1289],{},[485,1285,1286],{},[238,1287,1288],{},"level",[485,1290,1291,1294,1295],{},[238,1292,1293],{},"severityNumber"," / ",[238,1296,1297],{},"severityText",[470,1299,1300,1305],{},[485,1301,1302],{},[238,1303,1304],{},"timestamp",[485,1306,1307],{},[238,1308,1309],{},"timeUnixNano",[470,1311,1312,1316],{},[485,1313,1314],{},[238,1315,1152],{},[485,1317,1318,1319],{},"Resource attribute ",[238,1320,912],{},[470,1322,1323,1328],{},[485,1324,1325],{},[238,1326,1327],{},"environment",[485,1329,1318,1330],{},[238,1331,817],{},[470,1333,1334,1339],{},[485,1335,1336],{},[238,1337,1338],{},"version",[485,1340,1318,1341],{},[238,1342,1343],{},"service.version",[470,1345,1346,1351],{},[485,1347,1348],{},[238,1349,1350],{},"region",[485,1352,1318,1353],{},[238,1354,1355],{},"cloud.region",[470,1357,1358,1363],{},[485,1359,1360],{},[238,1361,1362],{},"traceId",[485,1364,1365],{},[238,1366,1362],{},[470,1368,1369,1374],{},[485,1370,1371],{},[238,1372,1373],{},"spanId",[485,1375,1376],{},[238,1377,1373],{},[470,1379,1380,1383],{},[485,1381,1382],{},"All other fields",[485,1384,1385],{},"Log attributes",[277,1387,1389],{"id":1388},"severity-mapping","Severity Mapping",[464,1391,1392,1405],{},[467,1393,1394],{},[470,1395,1396,1399,1402],{},[473,1397,1398],{},"evlog Level",[473,1400,1401],{},"OTLP Severity Number",[473,1403,1404],{},"OTLP Severity Text",[480,1406,1407,1419,1431,1444],{},[470,1408,1409,1413,1416],{},[485,1410,1411],{},[238,1412,1197],{},[485,1414,1415],{},"5",[485,1417,1418],{},"DEBUG",[470,1420,1421,1425,1428],{},[485,1422,1423],{},[238,1424,1025],{},[485,1426,1427],{},"9",[485,1429,1430],{},"INFO",[470,1432,1433,1438,1441],{},[485,1434,1435],{},[238,1436,1437],{},"warn",[485,1439,1440],{},"13",[485,1442,1443],{},"WARN",[470,1445,1446,1451,1454],{},[485,1447,1448],{},[238,1449,1450],{},"error",[485,1452,1453],{},"17",[485,1455,1456],{},"ERROR",[223,1458,1460],{"id":1459},"troubleshooting","Troubleshooting",[277,1462,1464],{"id":1463},"missing-endpoint-error","Missing endpoint error",[230,1466,1471],{"className":1467,"code":1469,"language":1470},[1468],"language-text","[evlog/otlp] Missing endpoint. Set NUXT_OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_ENDPOINT\n","text",[238,1472,1469],{"__ignoreMap":236},[178,1474,1475],{},"Make sure your endpoint environment variable is set and the server was restarted.",[277,1477,1479],{"id":1478},"_401-unauthorized","401 Unauthorized",[178,1481,1482],{},"Your authentication headers may be missing or incorrect. Check:",[419,1484,1485,1491,1494],{},[185,1486,1487,1488,1490],{},"The ",[238,1489,563],{}," format is correct",[185,1492,1493],{},"Credentials are valid and not expired",[185,1495,1496],{},"The endpoint URL is correct",[277,1498,1500],{"id":1499},"_404-not-found","404 Not Found",[178,1502,1503,1504,1507],{},"The adapter sends to ",[238,1505,1506],{},"/v1/logs",". Make sure your endpoint:",[182,1509,1510,1513],{},[185,1511,1512],{},"Supports OTLP HTTP (not gRPC)",[185,1514,1515,1516,1518],{},"Is the base URL without ",[238,1517,1506],{}," suffix",[277,1520,1522],{"id":1521},"logs-not-appearing","Logs not appearing",[419,1524,1525,1532,1535],{},[185,1526,1527,1528,1531],{},"Check the server console for ",[238,1529,1530],{},"[evlog/otlp]"," error messages",[185,1533,1534],{},"Test with a local collector first to verify the format",[185,1536,1537],{},"Check your backend's ingestion delay (some have 1-2 minute delays)",[223,1539,1541],{"id":1540},"direct-api-usage","Direct API Usage",[178,1543,1544],{},"For advanced use cases:",[230,1546,1549],{"className":232,"code":1547,"filename":1548,"language":235,"meta":236,"style":236},"import { sendToOTLP, sendBatchToOTLP, toOTLPLogRecord } from 'evlog/otlp'\n\n// Send a single event\nawait sendToOTLP(event, {\n  endpoint: 'http://localhost:4318',\n})\n\n// Send multiple events\nawait sendBatchToOTLP(events, {\n  endpoint: 'http://localhost:4318',\n})\n\n// Convert event to OTLP format (for inspection)\nconst otlpRecord = toOTLPLogRecord(event)\n","server/utils/otlp.ts",[238,1550,1551,1580,1584,1589,1603,1618,1624,1628,1633,1646,1660,1666,1670,1675],{"__ignoreMap":236},[241,1552,1553,1555,1557,1560,1562,1565,1567,1570,1572,1574,1576,1578],{"class":243,"line":244},[241,1554,248],{"class":247},[241,1556,252],{"class":251},[241,1558,1559],{"class":255}," sendToOTLP",[241,1561,396],{"class":251},[241,1563,1564],{"class":255}," sendBatchToOTLP",[241,1566,396],{"class":251},[241,1568,1569],{"class":255}," toOTLPLogRecord",[241,1571,259],{"class":251},[241,1573,262],{"class":247},[241,1575,265],{"class":251},[241,1577,269],{"class":268},[241,1579,272],{"class":251},[241,1581,1582],{"class":243,"line":329},[241,1583,333],{"emptyLinePlaceholder":332},[241,1585,1586],{"class":243,"line":336},[241,1587,1588],{"class":634},"// Send a single event\n",[241,1590,1591,1594,1596,1599,1601],{"class":243,"line":368},[241,1592,1593],{"class":247},"await",[241,1595,1559],{"class":345},[241,1597,1598],{"class":255},"(event",[241,1600,396],{"class":251},[241,1602,365],{"class":251},[241,1604,1605,1608,1610,1612,1614,1616],{"class":243,"line":404},[241,1606,1607],{"class":385},"  endpoint",[241,1609,608],{"class":251},[241,1611,265],{"class":251},[241,1613,494],{"class":268},[241,1615,388],{"class":251},[241,1617,748],{"class":251},[241,1619,1620,1622],{"class":243,"line":643},[241,1621,407],{"class":251},[241,1623,410],{"class":255},[241,1625,1626],{"class":243,"line":649},[241,1627,333],{"emptyLinePlaceholder":332},[241,1629,1630],{"class":243,"line":776},[241,1631,1632],{"class":634},"// Send multiple events\n",[241,1634,1635,1637,1639,1642,1644],{"class":243,"line":797},[241,1636,1593],{"class":247},[241,1638,1564],{"class":345},[241,1640,1641],{"class":255},"(events",[241,1643,396],{"class":251},[241,1645,365],{"class":251},[241,1647,1648,1650,1652,1654,1656,1658],{"class":243,"line":802},[241,1649,1607],{"class":385},[241,1651,608],{"class":251},[241,1653,265],{"class":251},[241,1655,494],{"class":268},[241,1657,388],{"class":251},[241,1659,748],{"class":251},[241,1661,1662,1664],{"class":243,"line":812},[241,1663,407],{"class":251},[241,1665,410],{"class":255},[241,1667,1668],{"class":243,"line":833},[241,1669,333],{"emptyLinePlaceholder":332},[241,1671,1672],{"class":243,"line":838},[241,1673,1674],{"class":634},"// Convert event to OTLP format (for inspection)\n",[241,1676,1677,1680,1683,1685,1687],{"class":243,"line":847},[241,1678,1679],{"class":361},"const",[241,1681,1682],{"class":255}," otlpRecord ",[241,1684,296],{"class":251},[241,1686,1569],{"class":345},[241,1688,1689],{"class":255},"(event)\n",[223,1691,1693],{"id":1692},"next-steps","Next Steps",[182,1695,1696,1703,1709,1714],{},[185,1697,1698,1702],{},[1699,1700,1701],"a",{"href":67},"Axiom Adapter"," - Send logs to Axiom",[185,1704,1705,1708],{},[1699,1706,1707],{"href":77},"PostHog Adapter"," - Send logs to PostHog",[185,1710,1711,1713],{},[1699,1712,91],{"href":92}," - Build your own adapter",[185,1715,1716,1718],{},[1699,1717,46],{"href":47}," - Security and production tips",[1720,1721,1722],"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 .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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":236,"searchDepth":329,"depth":329,"links":1724},[1725,1726,1730,1736,1741,1744,1750,1751],{"id":225,"depth":329,"text":15},{"id":275,"depth":329,"text":20,"children":1727},[1728,1729],{"id":279,"depth":336,"text":280},{"id":302,"depth":336,"text":303},{"id":413,"depth":329,"text":414,"children":1731},[1732,1733,1734,1735],{"id":461,"depth":336,"text":462},{"id":579,"depth":336,"text":580},{"id":656,"depth":336,"text":657},{"id":854,"depth":336,"text":855},{"id":969,"depth":329,"text":970,"children":1737},[1738,1739,1740],{"id":973,"depth":336,"text":190},{"id":1033,"depth":336,"text":196},{"id":1064,"depth":336,"text":1065},{"id":1263,"depth":329,"text":1264,"children":1742},[1743],{"id":1388,"depth":336,"text":1389},{"id":1459,"depth":329,"text":1460,"children":1745},[1746,1747,1748,1749],{"id":1463,"depth":336,"text":1464},{"id":1478,"depth":336,"text":1479},{"id":1499,"depth":336,"text":1500},{"id":1521,"depth":336,"text":1522},{"id":1540,"depth":329,"text":1541},{"id":1692,"depth":329,"text":1693},"Send logs via OpenTelemetry Protocol (OTLP) to Grafana, Datadog, Honeycomb, and any compatible backend. Supports gRPC and HTTP transports.","md",[1755,1762],{"label":1756,"icon":1757,"to":1758,"target":1759,"color":1760,"variant":1761},"OpenTelemetry Docs","i-lucide-external-link","https://opentelemetry.io/docs/","_blank","neutral","subtle",{"label":91,"icon":94,"to":92,"color":1760,"variant":1761},{},{"title":71,"icon":74},{"title":173,"description":1752},"hvD_DulRAFeZjkfBTfpqrnJI5dqVF5pxM_R1wWTYZyQ",[1768,1770],{"title":66,"path":67,"stem":68,"description":1769,"icon":69,"children":-1},"Send wide events to Axiom for powerful querying, dashboards, and alerting. Zero-config setup with environment variables and automatic batching.",{"title":76,"path":77,"stem":78,"description":1771,"icon":79,"children":-1},"Send wide events to PostHog Logs via OTLP for structured log querying, debugging, and observability in your PostHog dashboard.",1772880294753]