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