[{"data":1,"prerenderedAt":2295},["ShallowReactive",2],{"navigation_docs":3,"-adapters-posthog":219,"-adapters-posthog-surround":2290},[4,30,105,139,188,205],{"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},"Frameworks","/frameworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100],{"title":36,"path":37,"stem":38,"icon":39},"Overview","/frameworks/overview","2.frameworks/00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","/frameworks/nuxt","2.frameworks/01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","/frameworks/nextjs","2.frameworks/02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","/frameworks/sveltekit","2.frameworks/03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","/frameworks/nitro","2.frameworks/04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","/frameworks/tanstack-start","2.frameworks/05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","/frameworks/nestjs","2.frameworks/06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","/frameworks/express","2.frameworks/07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","/frameworks/hono","2.frameworks/08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","/frameworks/fastify","2.frameworks/09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","/frameworks/elysia","2.frameworks/10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"Cloudflare Workers","/frameworks/cloudflare-workers","2.frameworks/11.cloudflare-workers","i-simple-icons-cloudflare",{"title":96,"path":97,"stem":98,"icon":99},"Standalone","/frameworks/standalone","2.frameworks/12.standalone","i-simple-icons-typescript",{"title":101,"path":102,"stem":103,"icon":104},"Astro","/frameworks/astro","2.frameworks/13.astro","i-simple-icons-astro",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Core Concepts","/core-concepts","3.core-concepts",[110,115,120,125,129,134],{"title":111,"path":112,"stem":113,"icon":114},"Wide Events","/core-concepts/wide-events","3.core-concepts/1.wide-events","i-lucide-layers",{"title":116,"path":117,"stem":118,"icon":119},"Structured Errors","/core-concepts/structured-errors","3.core-concepts/2.structured-errors","i-lucide-shield-alert",{"title":121,"path":122,"stem":123,"icon":124},"Best Practices","/core-concepts/best-practices","3.core-concepts/3.best-practices","i-lucide-shield-check",{"title":126,"path":127,"stem":128,"icon":99},"Typed Fields","/core-concepts/typed-fields","3.core-concepts/4.typed-fields",{"title":130,"path":131,"stem":132,"icon":133},"Sampling","/core-concepts/sampling","3.core-concepts/5.sampling","i-lucide-filter",{"title":135,"path":136,"stem":137,"icon":138},"Client Logging","/core-concepts/client-logging","3.core-concepts/6.client-logging","i-lucide-monitor",{"title":140,"path":141,"stem":142,"children":143,"page":29},"Adapters","/adapters","4.adapters",[144,148,153,158,163,168,173,178,183],{"title":36,"path":145,"stem":146,"icon":147},"/adapters/overview","4.adapters/1.overview","i-custom-plug",{"title":149,"path":150,"stem":151,"icon":152},"Axiom","/adapters/axiom","4.adapters/2.axiom","i-custom-axiom",{"title":154,"path":155,"stem":156,"icon":157},"OTLP","/adapters/otlp","4.adapters/3.otlp","i-simple-icons-opentelemetry",{"title":159,"path":160,"stem":161,"icon":162},"PostHog","/adapters/posthog","4.adapters/4.posthog","i-simple-icons-posthog",{"title":164,"path":165,"stem":166,"icon":167},"Sentry","/adapters/sentry","4.adapters/5.sentry","i-simple-icons-sentry",{"title":169,"path":170,"stem":171,"icon":172},"Better Stack","/adapters/better-stack","4.adapters/6.better-stack","i-simple-icons-betterstack",{"title":174,"path":175,"stem":176,"icon":177},"Custom Adapters","/adapters/custom","4.adapters/7.custom","i-lucide-code",{"title":179,"path":180,"stem":181,"icon":182},"Pipeline","/adapters/pipeline","4.adapters/8.pipeline","i-lucide-workflow",{"title":184,"path":185,"stem":186,"icon":187},"Browser","/adapters/browser","4.adapters/9.browser","i-lucide-globe",{"title":189,"path":190,"stem":191,"children":192,"page":29},"Enrichers","/enrichers","5.enrichers",[193,196,201],{"title":36,"path":194,"stem":195,"icon":28},"/enrichers/overview","5.enrichers/1.overview",{"title":197,"path":198,"stem":199,"icon":200},"Built-in","/enrichers/built-in","5.enrichers/2.built-in","i-lucide-puzzle",{"title":202,"path":203,"stem":204,"icon":177},"Custom","/enrichers/custom","5.enrichers/3.custom",{"title":206,"path":207,"stem":208,"children":209,"page":29},"NuxtHub","/nuxthub","6.nuxthub",[210,214],{"title":36,"path":211,"stem":212,"icon":213},"/nuxthub/overview","6.nuxthub/1.overview","i-lucide-database",{"title":215,"path":216,"stem":217,"icon":218},"Retention","/nuxthub/retention","6.nuxthub/2.retention","i-lucide-clock",{"id":220,"title":221,"body":222,"description":2276,"extension":2277,"links":2278,"meta":2286,"navigation":2287,"path":160,"seo":2288,"stem":161,"__hash__":2289},"docs/4.adapters/4.posthog.md","PostHog Adapter",{"type":223,"value":224,"toc":2246},"minimark",[225,241,245,248,291,294,299,332,336,355,359,807,810,814,817,851,855,909,913,920,1004,1008,1011,1068,1072,1148,1152,1162,1194,1198,1204,1244,1272,1276,1283,1296,1300,1306,1386,1400,1408,1412,1516,1520,1523,1611,1615,1621,1647,1651,1726,1729,1856,1860,1864,1872,1875,1879,1882,1902,1906,1912,1925,1929,1932,2051,2054,2214,2218,2242],[226,227,228,234,235,240],"p",{},[229,230,159],"a",{"href":231,"rel":232},"https://posthog.com",[233],"nofollow"," is an open-source product analytics platform. The evlog PostHog adapter sends your wide events to ",[229,236,239],{"href":237,"rel":238},"https://posthog.com/docs/logs",[233],"PostHog Logs"," via the standard OTLP format, giving you a dedicated log viewer with filtering, search, and tail mode — all using your existing PostHog API key.",[242,243,15],"h2",{"id":244},"installation",[226,246,247],{},"The PostHog adapter comes bundled with evlog:",[249,250,255],"pre",{"className":251,"code":252,"language":253,"meta":254,"style":254},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createPostHogDrain } from 'evlog/posthog'\n","typescript","",[256,257,258],"code",{"__ignoreMap":254},[259,260,263,267,271,275,278,281,284,288],"span",{"class":261,"line":262},"line",1,[259,264,266],{"class":265},"s7zQu","import",[259,268,270],{"class":269},"sMK4o"," {",[259,272,274],{"class":273},"sTEyZ"," createPostHogDrain",[259,276,277],{"class":269}," }",[259,279,280],{"class":265}," from",[259,282,283],{"class":269}," '",[259,285,287],{"class":286},"sfazB","evlog/posthog",[259,289,290],{"class":269},"'\n",[242,292,20],{"id":293},"quick-start",[295,296,298],"h3",{"id":297},"_1-get-your-posthog-project-api-key","1. Get your PostHog project API key",[300,301,302,311,325],"ol",{},[303,304,305,306],"li",{},"Log in to your ",[229,307,310],{"href":308,"rel":309},"https://app.posthog.com",[233],"PostHog dashboard",[303,312,313,314,318,319,318,322],{},"Go to ",[315,316,317],"strong",{},"Settings"," > ",[315,320,321],{},"Project",[315,323,324],{},"Project API Key",[303,326,327,328,331],{},"Copy the key (starts with ",[256,329,330],{},"phc_",")",[295,333,335],{"id":334},"_2-set-environment-variables","2. Set environment variables",[249,337,342],{"className":338,"code":339,"filename":340,"language":341,"meta":254,"style":254},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","POSTHOG_API_KEY=phc_your-project-api-key\n",".env","bash",[256,343,344],{"__ignoreMap":254},[259,345,346,349,352],{"class":261,"line":262},[259,347,348],{"class":273},"POSTHOG_API_KEY",[259,350,351],{"class":269},"=",[259,353,354],{"class":286},"phc_your-project-api-key\n",[295,356,358],{"id":357},"_3-wire-the-drain-to-your-framework","3. Wire the drain to your framework",[360,361,362,476,539,593,652,706,759],"code-group",{},[249,363,366],{"className":251,"code":364,"filename":365,"language":253,"meta":254,"style":254},"// server/plugins/evlog-drain.ts\nimport { createPostHogDrain } from 'evlog/posthog'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createPostHogDrain())\n})\n","Nuxt / Nitro",[256,367,368,374,393,400,431,467],{"__ignoreMap":254},[259,369,370],{"class":261,"line":262},[259,371,373],{"class":372},"sHwdD","// server/plugins/evlog-drain.ts\n",[259,375,377,379,381,383,385,387,389,391],{"class":261,"line":376},2,[259,378,266],{"class":265},[259,380,270],{"class":269},[259,382,274],{"class":273},[259,384,277],{"class":269},[259,386,280],{"class":265},[259,388,283],{"class":269},[259,390,287],{"class":286},[259,392,290],{"class":269},[259,394,396],{"class":261,"line":395},3,[259,397,399],{"emptyLinePlaceholder":398},true,"\n",[259,401,403,406,409,413,416,418,422,424,428],{"class":261,"line":402},4,[259,404,405],{"class":265},"export",[259,407,408],{"class":265}," default",[259,410,412],{"class":411},"s2Zo4"," defineNitroPlugin",[259,414,415],{"class":273},"(",[259,417,415],{"class":269},[259,419,421],{"class":420},"sHdIc","nitroApp",[259,423,331],{"class":269},[259,425,427],{"class":426},"spNyl"," =>",[259,429,430],{"class":269}," {\n",[259,432,434,437,440,443,445,448,451,454,457,459,462,464],{"class":261,"line":433},5,[259,435,436],{"class":273},"  nitroApp",[259,438,439],{"class":269},".",[259,441,442],{"class":273},"hooks",[259,444,439],{"class":269},[259,446,447],{"class":411},"hook",[259,449,415],{"class":450},"swJcz",[259,452,453],{"class":269},"'",[259,455,456],{"class":286},"evlog:drain",[259,458,453],{"class":269},[259,460,461],{"class":269},",",[259,463,274],{"class":411},[259,465,466],{"class":450},"())\n",[259,468,470,473],{"class":261,"line":469},6,[259,471,472],{"class":269},"}",[259,474,475],{"class":273},")\n",[249,477,479],{"className":251,"code":478,"filename":76,"language":253,"meta":254,"style":254},"import { createPostHogDrain } from 'evlog/posthog'\n\napp.use(evlog({ drain: createPostHogDrain() }))\n",[256,480,481,499,503],{"__ignoreMap":254},[259,482,483,485,487,489,491,493,495,497],{"class":261,"line":262},[259,484,266],{"class":265},[259,486,270],{"class":269},[259,488,274],{"class":273},[259,490,277],{"class":269},[259,492,280],{"class":265},[259,494,283],{"class":269},[259,496,287],{"class":286},[259,498,290],{"class":269},[259,500,501],{"class":261,"line":376},[259,502,399],{"emptyLinePlaceholder":398},[259,504,505,508,510,513,515,518,520,523,526,529,531,534,536],{"class":261,"line":395},[259,506,507],{"class":273},"app",[259,509,439],{"class":269},[259,511,512],{"class":411},"use",[259,514,415],{"class":273},[259,516,517],{"class":411},"evlog",[259,519,415],{"class":273},[259,521,522],{"class":269},"{",[259,524,525],{"class":450}," drain",[259,527,528],{"class":269},":",[259,530,274],{"class":411},[259,532,533],{"class":273},"() ",[259,535,472],{"class":269},[259,537,538],{"class":273},"))\n",[249,540,541],{"className":251,"code":478,"filename":71,"language":253,"meta":254,"style":254},[256,542,543,561,565],{"__ignoreMap":254},[259,544,545,547,549,551,553,555,557,559],{"class":261,"line":262},[259,546,266],{"class":265},[259,548,270],{"class":269},[259,550,274],{"class":273},[259,552,277],{"class":269},[259,554,280],{"class":265},[259,556,283],{"class":269},[259,558,287],{"class":286},[259,560,290],{"class":269},[259,562,563],{"class":261,"line":376},[259,564,399],{"emptyLinePlaceholder":398},[259,566,567,569,571,573,575,577,579,581,583,585,587,589,591],{"class":261,"line":395},[259,568,507],{"class":273},[259,570,439],{"class":269},[259,572,512],{"class":411},[259,574,415],{"class":273},[259,576,517],{"class":411},[259,578,415],{"class":273},[259,580,522],{"class":269},[259,582,525],{"class":450},[259,584,528],{"class":269},[259,586,274],{"class":411},[259,588,533],{"class":273},[259,590,472],{"class":269},[259,592,538],{"class":273},[249,594,596],{"className":251,"code":595,"filename":81,"language":253,"meta":254,"style":254},"import { createPostHogDrain } from 'evlog/posthog'\n\nawait app.register(evlog, { drain: createPostHogDrain() })\n",[256,597,598,616,620],{"__ignoreMap":254},[259,599,600,602,604,606,608,610,612,614],{"class":261,"line":262},[259,601,266],{"class":265},[259,603,270],{"class":269},[259,605,274],{"class":273},[259,607,277],{"class":269},[259,609,280],{"class":265},[259,611,283],{"class":269},[259,613,287],{"class":286},[259,615,290],{"class":269},[259,617,618],{"class":261,"line":376},[259,619,399],{"emptyLinePlaceholder":398},[259,621,622,625,628,630,633,636,638,640,642,644,646,648,650],{"class":261,"line":395},[259,623,624],{"class":265},"await",[259,626,627],{"class":273}," app",[259,629,439],{"class":269},[259,631,632],{"class":411},"register",[259,634,635],{"class":273},"(evlog",[259,637,461],{"class":269},[259,639,270],{"class":269},[259,641,525],{"class":450},[259,643,528],{"class":269},[259,645,274],{"class":411},[259,647,533],{"class":273},[259,649,472],{"class":269},[259,651,475],{"class":273},[249,653,654],{"className":251,"code":478,"filename":86,"language":253,"meta":254,"style":254},[256,655,656,674,678],{"__ignoreMap":254},[259,657,658,660,662,664,666,668,670,672],{"class":261,"line":262},[259,659,266],{"class":265},[259,661,270],{"class":269},[259,663,274],{"class":273},[259,665,277],{"class":269},[259,667,280],{"class":265},[259,669,283],{"class":269},[259,671,287],{"class":286},[259,673,290],{"class":269},[259,675,676],{"class":261,"line":376},[259,677,399],{"emptyLinePlaceholder":398},[259,679,680,682,684,686,688,690,692,694,696,698,700,702,704],{"class":261,"line":395},[259,681,507],{"class":273},[259,683,439],{"class":269},[259,685,512],{"class":411},[259,687,415],{"class":273},[259,689,517],{"class":411},[259,691,415],{"class":273},[259,693,522],{"class":269},[259,695,525],{"class":450},[259,697,528],{"class":269},[259,699,274],{"class":411},[259,701,533],{"class":273},[259,703,472],{"class":269},[259,705,538],{"class":273},[249,707,709],{"className":251,"code":708,"filename":66,"language":253,"meta":254,"style":254},"import { createPostHogDrain } from 'evlog/posthog'\n\nEvlogModule.forRoot({ drain: createPostHogDrain() })\n",[256,710,711,729,733],{"__ignoreMap":254},[259,712,713,715,717,719,721,723,725,727],{"class":261,"line":262},[259,714,266],{"class":265},[259,716,270],{"class":269},[259,718,274],{"class":273},[259,720,277],{"class":269},[259,722,280],{"class":265},[259,724,283],{"class":269},[259,726,287],{"class":286},[259,728,290],{"class":269},[259,730,731],{"class":261,"line":376},[259,732,399],{"emptyLinePlaceholder":398},[259,734,735,738,740,743,745,747,749,751,753,755,757],{"class":261,"line":395},[259,736,737],{"class":273},"EvlogModule",[259,739,439],{"class":269},[259,741,742],{"class":411},"forRoot",[259,744,415],{"class":273},[259,746,522],{"class":269},[259,748,525],{"class":450},[259,750,528],{"class":269},[259,752,274],{"class":411},[259,754,533],{"class":273},[259,756,472],{"class":269},[259,758,475],{"class":273},[249,760,762],{"className":251,"code":761,"filename":96,"language":253,"meta":254,"style":254},"import { createPostHogDrain } from 'evlog/posthog'\n\ninitLogger({ drain: createPostHogDrain() })\n",[256,763,764,782,786],{"__ignoreMap":254},[259,765,766,768,770,772,774,776,778,780],{"class":261,"line":262},[259,767,266],{"class":265},[259,769,270],{"class":269},[259,771,274],{"class":273},[259,773,277],{"class":269},[259,775,280],{"class":265},[259,777,283],{"class":269},[259,779,287],{"class":286},[259,781,290],{"class":269},[259,783,784],{"class":261,"line":376},[259,785,399],{"emptyLinePlaceholder":398},[259,787,788,791,793,795,797,799,801,803,805],{"class":261,"line":395},[259,789,790],{"class":411},"initLogger",[259,792,415],{"class":273},[259,794,522],{"class":269},[259,796,525],{"class":450},[259,798,528],{"class":269},[259,800,274],{"class":411},[259,802,533],{"class":273},[259,804,472],{"class":269},[259,806,475],{"class":273},[226,808,809],{},"That's it! Your wide events will now appear in PostHog Logs with full OTLP structure including severity levels, trace context, and structured attributes.",[242,811,813],{"id":812},"configuration","Configuration",[226,815,816],{},"The adapter reads configuration from multiple sources (highest priority first):",[300,818,819,828,838],{},[303,820,821,824,825],{},[315,822,823],{},"Overrides"," passed to ",[256,826,827],{},"createPostHogDrain()",[303,829,830,833,834,837],{},[315,831,832],{},"Runtime config"," at ",[256,835,836],{},"runtimeConfig.posthog"," (Nuxt/Nitro only)",[303,839,840,843,844,847,848,331],{},[315,841,842],{},"Environment variables"," (",[256,845,846],{},"POSTHOG_*"," or ",[256,849,850],{},"NUXT_POSTHOG_*",[295,852,854],{"id":853},"environment-variables","Environment Variables",[856,857,858,874],"table",{},[859,860,861],"thead",{},[862,863,864,868,871],"tr",{},[865,866,867],"th",{},"Variable",[865,869,870],{},"Nuxt alias",[865,872,873],{},"Description",[875,876,877,894],"tbody",{},[862,878,879,884,889],{},[880,881,882],"td",{},[256,883,348],{},[880,885,886],{},[256,887,888],{},"NUXT_POSTHOG_API_KEY",[880,890,891,892,331],{},"Project API key (starts with ",[256,893,330],{},[862,895,896,901,906],{},[880,897,898],{},[256,899,900],{},"POSTHOG_HOST",[880,902,903],{},[256,904,905],{},"NUXT_POSTHOG_HOST",[880,907,908],{},"PostHog host URL (for EU or self-hosted)",[295,910,912],{"id":911},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[226,914,915,916,919],{},"Configure via ",[256,917,918],{},"nuxt.config.ts"," for type-safe configuration:",[249,921,923],{"className":251,"code":922,"filename":918,"language":253,"meta":254,"style":254},"export default defineNuxtConfig({\n  runtimeConfig: {\n    posthog: {\n      apiKey: '', // Set via NUXT_POSTHOG_API_KEY\n      host: '', // Set via NUXT_POSTHOG_HOST\n    },\n  },\n})\n",[256,924,925,939,948,957,972,986,991,997],{"__ignoreMap":254},[259,926,927,929,931,934,936],{"class":261,"line":262},[259,928,405],{"class":265},[259,930,408],{"class":265},[259,932,933],{"class":411}," defineNuxtConfig",[259,935,415],{"class":273},[259,937,938],{"class":269},"{\n",[259,940,941,944,946],{"class":261,"line":376},[259,942,943],{"class":450},"  runtimeConfig",[259,945,528],{"class":269},[259,947,430],{"class":269},[259,949,950,953,955],{"class":261,"line":395},[259,951,952],{"class":450},"    posthog",[259,954,528],{"class":269},[259,956,430],{"class":269},[259,958,959,962,964,967,969],{"class":261,"line":402},[259,960,961],{"class":450},"      apiKey",[259,963,528],{"class":269},[259,965,966],{"class":269}," ''",[259,968,461],{"class":269},[259,970,971],{"class":372}," // Set via NUXT_POSTHOG_API_KEY\n",[259,973,974,977,979,981,983],{"class":261,"line":433},[259,975,976],{"class":450},"      host",[259,978,528],{"class":269},[259,980,966],{"class":269},[259,982,461],{"class":269},[259,984,985],{"class":372}," // Set via NUXT_POSTHOG_HOST\n",[259,987,988],{"class":261,"line":469},[259,989,990],{"class":269},"    },\n",[259,992,994],{"class":261,"line":993},7,[259,995,996],{"class":269},"  },\n",[259,998,1000,1002],{"class":261,"line":999},8,[259,1001,472],{"class":269},[259,1003,475],{"class":273},[295,1005,1007],{"id":1006},"override-options","Override Options",[226,1009,1010],{},"Pass options directly to override any configuration:",[249,1012,1014],{"className":251,"code":1013,"language":253,"meta":254,"style":254},"const drain = createPostHogDrain({\n  host: 'https://eu.i.posthog.com',\n  timeout: 10000,\n})\n",[256,1015,1016,1032,1049,1062],{"__ignoreMap":254},[259,1017,1018,1021,1024,1026,1028,1030],{"class":261,"line":262},[259,1019,1020],{"class":426},"const",[259,1022,1023],{"class":273}," drain ",[259,1025,351],{"class":269},[259,1027,274],{"class":411},[259,1029,415],{"class":273},[259,1031,938],{"class":269},[259,1033,1034,1037,1039,1041,1044,1046],{"class":261,"line":376},[259,1035,1036],{"class":450},"  host",[259,1038,528],{"class":269},[259,1040,283],{"class":269},[259,1042,1043],{"class":286},"https://eu.i.posthog.com",[259,1045,453],{"class":269},[259,1047,1048],{"class":269},",\n",[259,1050,1051,1054,1056,1060],{"class":261,"line":395},[259,1052,1053],{"class":450},"  timeout",[259,1055,528],{"class":269},[259,1057,1059],{"class":1058},"sbssI"," 10000",[259,1061,1048],{"class":269},[259,1063,1064,1066],{"class":261,"line":402},[259,1065,472],{"class":269},[259,1067,475],{"class":273},[295,1069,1071],{"id":1070},"full-configuration-reference","Full Configuration Reference",[856,1073,1074,1089],{},[859,1075,1076],{},[862,1077,1078,1081,1084,1087],{},[865,1079,1080],{},"Option",[865,1082,1083],{},"Type",[865,1085,1086],{},"Default",[865,1088,873],{},[875,1090,1091,1109,1128],{},[862,1092,1093,1098,1103,1106],{},[880,1094,1095],{},[256,1096,1097],{},"apiKey",[880,1099,1100],{},[256,1101,1102],{},"string",[880,1104,1105],{},"-",[880,1107,1108],{},"Project API key (required)",[862,1110,1111,1116,1120,1125],{},[880,1112,1113],{},[256,1114,1115],{},"host",[880,1117,1118],{},[256,1119,1102],{},[880,1121,1122],{},[256,1123,1124],{},"https://us.i.posthog.com",[880,1126,1127],{},"PostHog host URL",[862,1129,1130,1135,1140,1145],{},[880,1131,1132],{},[256,1133,1134],{},"timeout",[880,1136,1137],{},[256,1138,1139],{},"number",[880,1141,1142],{},[256,1143,1144],{},"5000",[880,1146,1147],{},"Request timeout in milliseconds",[242,1149,1151],{"id":1150},"how-it-works","How It Works",[226,1153,1154,1155,1157,1158,1161],{},"Under the hood, ",[256,1156,827],{}," wraps the OTLP adapter's ",[256,1159,1160],{},"sendBatchToOTLP()"," with PostHog-specific defaults:",[1163,1164,1165,1175,1184],"ul",{},[303,1166,1167,1170,1171,1174],{},[315,1168,1169],{},"Endpoint",": ",[256,1172,1173],{},"{host}/i/v1/logs"," (PostHog's OTLP log ingest endpoint)",[303,1176,1177,1170,1180,1183],{},[315,1178,1179],{},"Auth",[256,1181,1182],{},"Authorization: Bearer {apiKey}"," header",[303,1185,1186,1189,1190,1193],{},[315,1187,1188],{},"Format",": Standard OTLP ",[256,1191,1192],{},"ExportLogsServiceRequest"," with severity levels, trace context, and structured attributes",[242,1195,1197],{"id":1196},"regions","Regions",[226,1199,1200,1201,1203],{},"PostHog offers US and EU cloud hosting. Set the ",[256,1202,1115],{}," to match your region:",[856,1205,1206,1216],{},[859,1207,1208],{},[862,1209,1210,1213],{},[865,1211,1212],{},"Region",[865,1214,1215],{},"Host",[875,1217,1218,1227,1236],{},[862,1219,1220,1223],{},[880,1221,1222],{},"US (default)",[880,1224,1225],{},[256,1226,1124],{},[862,1228,1229,1232],{},[880,1230,1231],{},"EU",[880,1233,1234],{},[256,1235,1043],{},[862,1237,1238,1241],{},[880,1239,1240],{},"Self-hosted",[880,1242,1243],{},"Your instance URL",[249,1245,1247],{"className":338,"code":1246,"filename":340,"language":341,"meta":254,"style":254},"# EU region\nPOSTHOG_API_KEY=phc_xxx\nPOSTHOG_HOST=https://eu.i.posthog.com\n",[256,1248,1249,1254,1263],{"__ignoreMap":254},[259,1250,1251],{"class":261,"line":262},[259,1252,1253],{"class":372},"# EU region\n",[259,1255,1256,1258,1260],{"class":261,"line":376},[259,1257,348],{"class":273},[259,1259,351],{"class":269},[259,1261,1262],{"class":286},"phc_xxx\n",[259,1264,1265,1267,1269],{"class":261,"line":395},[259,1266,900],{"class":273},[259,1268,351],{"class":269},[259,1270,1271],{"class":286},"https://eu.i.posthog.com\n",[242,1273,1275],{"id":1274},"querying-logs-in-posthog","Querying Logs in PostHog",[226,1277,1278,1279,1282],{},"Once your logs are flowing, use the ",[315,1280,1281],{},"Logs"," tab in PostHog to query them:",[300,1284,1285,1290,1293],{},[303,1286,313,1287,1289],{},[315,1288,1281],{}," and filter by service, severity, or any structured attribute",[303,1291,1292],{},"Use the search bar to find specific log entries",[303,1294,1295],{},"Click on a log entry to see all structured attributes",[242,1297,1299],{"id":1298},"posthog-events-custom-events","PostHog Events (Custom Events)",[226,1301,1302,1303,528],{},"If you prefer sending logs as PostHog custom events (e.g., for product analytics, cohorts, or funnels), use ",[256,1304,1305],{},"createPostHogEventsDrain()",[249,1307,1309],{"className":251,"code":1308,"language":253,"meta":254,"style":254},"import { createPostHogEventsDrain } from 'evlog/posthog'\n\nconst drain = createPostHogEventsDrain({\n  eventName: 'server_request',\n  distinctId: 'my-backend-service',\n})\n",[256,1310,1311,1330,1334,1348,1364,1380],{"__ignoreMap":254},[259,1312,1313,1315,1317,1320,1322,1324,1326,1328],{"class":261,"line":262},[259,1314,266],{"class":265},[259,1316,270],{"class":269},[259,1318,1319],{"class":273}," createPostHogEventsDrain",[259,1321,277],{"class":269},[259,1323,280],{"class":265},[259,1325,283],{"class":269},[259,1327,287],{"class":286},[259,1329,290],{"class":269},[259,1331,1332],{"class":261,"line":376},[259,1333,399],{"emptyLinePlaceholder":398},[259,1335,1336,1338,1340,1342,1344,1346],{"class":261,"line":395},[259,1337,1020],{"class":426},[259,1339,1023],{"class":273},[259,1341,351],{"class":269},[259,1343,1319],{"class":411},[259,1345,415],{"class":273},[259,1347,938],{"class":269},[259,1349,1350,1353,1355,1357,1360,1362],{"class":261,"line":402},[259,1351,1352],{"class":450},"  eventName",[259,1354,528],{"class":269},[259,1356,283],{"class":269},[259,1358,1359],{"class":286},"server_request",[259,1361,453],{"class":269},[259,1363,1048],{"class":269},[259,1365,1366,1369,1371,1373,1376,1378],{"class":261,"line":433},[259,1367,1368],{"class":450},"  distinctId",[259,1370,528],{"class":269},[259,1372,283],{"class":269},[259,1374,1375],{"class":286},"my-backend-service",[259,1377,453],{"class":269},[259,1379,1048],{"class":269},[259,1381,1382,1384],{"class":261,"line":469},[259,1383,472],{"class":269},[259,1385,475],{"class":273},[226,1387,1388,1389,1392,1393,1395,1396,1399],{},"Then pass ",[256,1390,1391],{},"drain"," to your framework the same way as ",[256,1394,827],{}," (see ",[229,1397,20],{"href":1398},"#quick-start"," above).",[1401,1402,1404,1405,1407],"callout",{"color":1403,"icon":13},"info","Custom events count towards your PostHog event quota. PostHog Logs (the default ",[256,1406,827],{},") is significantly cheaper.",[295,1409,1411],{"id":1410},"events-configuration","Events Configuration",[856,1413,1414,1426],{},[859,1415,1416],{},[862,1417,1418,1420,1422,1424],{},[865,1419,1080],{},[865,1421,1083],{},[865,1423,1086],{},[865,1425,873],{},[875,1427,1428,1442,1458,1477,1500],{},[862,1429,1430,1434,1438,1440],{},[880,1431,1432],{},[256,1433,1097],{},[880,1435,1436],{},[256,1437,1102],{},[880,1439,1105],{},[880,1441,1108],{},[862,1443,1444,1448,1452,1456],{},[880,1445,1446],{},[256,1447,1115],{},[880,1449,1450],{},[256,1451,1102],{},[880,1453,1454],{},[256,1455,1124],{},[880,1457,1127],{},[862,1459,1460,1465,1469,1474],{},[880,1461,1462],{},[256,1463,1464],{},"eventName",[880,1466,1467],{},[256,1468,1102],{},[880,1470,1471],{},[256,1472,1473],{},"evlog_wide_event",[880,1475,1476],{},"PostHog event name",[862,1478,1479,1484,1488,1493],{},[880,1480,1481],{},[256,1482,1483],{},"distinctId",[880,1485,1486],{},[256,1487,1102],{},[880,1489,1490],{},[256,1491,1492],{},"event.service",[880,1494,1495,1496,1499],{},"Override ",[256,1497,1498],{},"distinct_id"," for all events",[862,1501,1502,1506,1510,1514],{},[880,1503,1504],{},[256,1505,1134],{},[880,1507,1508],{},[256,1509,1139],{},[880,1511,1512],{},[256,1513,1144],{},[880,1515,1147],{},[295,1517,1519],{"id":1518},"event-format","Event Format",[226,1521,1522],{},"evlog maps wide events to PostHog events:",[856,1524,1525,1535],{},[859,1526,1527],{},[862,1528,1529,1532],{},[865,1530,1531],{},"evlog Field",[865,1533,1534],{},"PostHog Field",[875,1536,1537,1555,1566,1578,1589,1601],{},[862,1538,1539,1550],{},[880,1540,1541,847,1544,847,1547],{},[256,1542,1543],{},"config.distinctId",[256,1545,1546],{},"userId",[256,1548,1549],{},"service",[880,1551,1552,1554],{},[256,1553,1498],{}," (fallback chain)",[862,1556,1557,1562],{},[880,1558,1559],{},[256,1560,1561],{},"timestamp",[880,1563,1564],{},[256,1565,1561],{},[862,1567,1568,1573],{},[880,1569,1570],{},[256,1571,1572],{},"level",[880,1574,1575],{},[256,1576,1577],{},"properties.level",[862,1579,1580,1584],{},[880,1581,1582],{},[256,1583,1549],{},[880,1585,1586],{},[256,1587,1588],{},"properties.service",[862,1590,1591,1596],{},[880,1592,1593],{},[256,1594,1595],{},"environment",[880,1597,1598],{},[256,1599,1600],{},"properties.environment",[862,1602,1603,1606],{},[880,1604,1605],{},"All other fields",[880,1607,1608],{},[256,1609,1610],{},"properties.*",[295,1612,1614],{"id":1613},"distinct-id-resolution","Distinct ID Resolution",[226,1616,1617,1618,1620],{},"The ",[256,1619,1498],{}," follows a fallback chain:",[300,1622,1623,1632,1640],{},[303,1624,1625,1629,1630],{},[315,1626,1627],{},[256,1628,1543],{}," — explicit override in ",[256,1631,1305],{},[303,1633,1634,1639],{},[315,1635,1636],{},[256,1637,1638],{},"event.userId"," — automatically picked up if present as a string",[303,1641,1642,1646],{},[315,1643,1644],{},[256,1645,1492],{}," — final fallback",[295,1648,1650],{"id":1649},"logs-vs-events","Logs vs Events",[856,1652,1653,1667],{},[859,1654,1655],{},[862,1656,1657,1659,1663],{},[865,1658],{},[865,1660,1661],{},[256,1662,827],{},[865,1664,1665],{},[256,1666,1305],{},[875,1668,1669,1687,1700,1713],{},[862,1670,1671,1675,1681],{},[880,1672,1673],{},[315,1674,1188],{},[880,1676,1677,1678,331],{},"OTLP Logs (",[256,1679,1680],{},"/i/v1/logs",[880,1682,1683,1684,331],{},"PostHog Events (",[256,1685,1686],{},"/batch/",[862,1688,1689,1694,1697],{},[880,1690,1691],{},[315,1692,1693],{},"PostHog UI",[880,1695,1696],{},"Logs viewer",[880,1698,1699],{},"Events explorer",[862,1701,1702,1707,1710],{},[880,1703,1704],{},[315,1705,1706],{},"Cost",[880,1708,1709],{},"Lower (dedicated logs pipeline)",[880,1711,1712],{},"Higher (counts as events)",[862,1714,1715,1720,1723],{},[880,1716,1717],{},[315,1718,1719],{},"Best for",[880,1721,1722],{},"Debugging, log search, observability",[880,1724,1725],{},"Product analytics, cohorts, funnels",[226,1727,1728],{},"You can use both drains simultaneously to get the best of both worlds:",[249,1730,1732],{"className":251,"code":1731,"language":253,"meta":254,"style":254},"import { createPostHogDrain, createPostHogEventsDrain } from 'evlog/posthog'\n\nconst logs = createPostHogDrain()\nconst events = createPostHogEventsDrain()\n\nconst drain = async (ctx) => {\n  await Promise.allSettled([logs(ctx), events(ctx)])\n}\n",[256,1733,1734,1756,1760,1774,1787,1791,1813,1851],{"__ignoreMap":254},[259,1735,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754],{"class":261,"line":262},[259,1737,266],{"class":265},[259,1739,270],{"class":269},[259,1741,274],{"class":273},[259,1743,461],{"class":269},[259,1745,1319],{"class":273},[259,1747,277],{"class":269},[259,1749,280],{"class":265},[259,1751,283],{"class":269},[259,1753,287],{"class":286},[259,1755,290],{"class":269},[259,1757,1758],{"class":261,"line":376},[259,1759,399],{"emptyLinePlaceholder":398},[259,1761,1762,1764,1767,1769,1771],{"class":261,"line":395},[259,1763,1020],{"class":426},[259,1765,1766],{"class":273}," logs ",[259,1768,351],{"class":269},[259,1770,274],{"class":411},[259,1772,1773],{"class":273},"()\n",[259,1775,1776,1778,1781,1783,1785],{"class":261,"line":402},[259,1777,1020],{"class":426},[259,1779,1780],{"class":273}," events ",[259,1782,351],{"class":269},[259,1784,1319],{"class":411},[259,1786,1773],{"class":273},[259,1788,1789],{"class":261,"line":433},[259,1790,399],{"emptyLinePlaceholder":398},[259,1792,1793,1795,1797,1799,1802,1804,1807,1809,1811],{"class":261,"line":469},[259,1794,1020],{"class":426},[259,1796,1023],{"class":273},[259,1798,351],{"class":269},[259,1800,1801],{"class":426}," async",[259,1803,843],{"class":269},[259,1805,1806],{"class":420},"ctx",[259,1808,331],{"class":269},[259,1810,427],{"class":426},[259,1812,430],{"class":269},[259,1814,1815,1818,1822,1824,1827,1830,1833,1835,1837,1839,1841,1844,1846,1848],{"class":261,"line":993},[259,1816,1817],{"class":265},"  await",[259,1819,1821],{"class":1820},"sBMFI"," Promise",[259,1823,439],{"class":269},[259,1825,1826],{"class":411},"allSettled",[259,1828,1829],{"class":450},"([",[259,1831,1832],{"class":411},"logs",[259,1834,415],{"class":450},[259,1836,1806],{"class":273},[259,1838,331],{"class":450},[259,1840,461],{"class":269},[259,1842,1843],{"class":411}," events",[259,1845,415],{"class":450},[259,1847,1806],{"class":273},[259,1849,1850],{"class":450},")])\n",[259,1852,1853],{"class":261,"line":999},[259,1854,1855],{"class":269},"}\n",[242,1857,1859],{"id":1858},"troubleshooting","Troubleshooting",[295,1861,1863],{"id":1862},"missing-apikey-error","Missing apiKey error",[249,1865,1870],{"className":1866,"code":1868,"language":1869},[1867],"language-text","[evlog/posthog] Missing apiKey. Set POSTHOG_API_KEY env var or pass to createPostHogDrain()\n","text",[256,1871,1868],{"__ignoreMap":254},[226,1873,1874],{},"Make sure your environment variable is set and the server was restarted after adding it.",[295,1876,1878],{"id":1877},"events-not-appearing","Events not appearing",[226,1880,1881],{},"PostHog processes events asynchronously. There may be a short delay (typically under 1 minute) before events appear in the dashboard.",[300,1883,1884,1891,1896],{},[303,1885,1886,1887,1890],{},"Check the server console for ",[256,1888,1889],{},"[evlog/posthog]"," error messages",[303,1892,1893,1894],{},"Verify your API key is correct and starts with ",[256,1895,330],{},[303,1897,1898,1899,1901],{},"Confirm your ",[256,1900,1115],{}," matches your PostHog region (US vs EU)",[295,1903,1905],{"id":1904},"wrong-region","Wrong region",[226,1907,1908,1909,1911],{},"If you're on PostHog EU but using the default US host, event delivery will fail and the adapter will log errors (for example under ",[256,1910,1889],{},") to your server console. Set the correct host:",[249,1913,1915],{"className":338,"code":1914,"filename":340,"language":341,"meta":254,"style":254},"POSTHOG_HOST=https://eu.i.posthog.com\n",[256,1916,1917],{"__ignoreMap":254},[259,1918,1919,1921,1923],{"class":261,"line":262},[259,1920,900],{"class":273},[259,1922,351],{"class":269},[259,1924,1271],{"class":286},[242,1926,1928],{"id":1927},"direct-api-usage","Direct API Usage",[226,1930,1931],{},"For advanced use cases, you can use the lower-level functions:",[249,1933,1936],{"className":251,"code":1934,"filename":1935,"language":253,"meta":254,"style":254},"import { sendToPostHog, sendBatchToPostHog } from 'evlog/posthog'\n\n// Send a single event to PostHog Logs (OTLP)\nawait sendToPostHog(event, {\n  apiKey: 'phc_xxx',\n})\n\n// Send multiple events in one request\nawait sendBatchToPostHog(events, {\n  apiKey: 'phc_xxx',\n})\n","server/utils/posthog.ts",[256,1937,1938,1962,1966,1971,1984,2000,2006,2010,2015,2029,2044],{"__ignoreMap":254},[259,1939,1940,1942,1944,1947,1949,1952,1954,1956,1958,1960],{"class":261,"line":262},[259,1941,266],{"class":265},[259,1943,270],{"class":269},[259,1945,1946],{"class":273}," sendToPostHog",[259,1948,461],{"class":269},[259,1950,1951],{"class":273}," sendBatchToPostHog",[259,1953,277],{"class":269},[259,1955,280],{"class":265},[259,1957,283],{"class":269},[259,1959,287],{"class":286},[259,1961,290],{"class":269},[259,1963,1964],{"class":261,"line":376},[259,1965,399],{"emptyLinePlaceholder":398},[259,1967,1968],{"class":261,"line":395},[259,1969,1970],{"class":372},"// Send a single event to PostHog Logs (OTLP)\n",[259,1972,1973,1975,1977,1980,1982],{"class":261,"line":402},[259,1974,624],{"class":265},[259,1976,1946],{"class":411},[259,1978,1979],{"class":273},"(event",[259,1981,461],{"class":269},[259,1983,430],{"class":269},[259,1985,1986,1989,1991,1993,1996,1998],{"class":261,"line":433},[259,1987,1988],{"class":450},"  apiKey",[259,1990,528],{"class":269},[259,1992,283],{"class":269},[259,1994,1995],{"class":286},"phc_xxx",[259,1997,453],{"class":269},[259,1999,1048],{"class":269},[259,2001,2002,2004],{"class":261,"line":469},[259,2003,472],{"class":269},[259,2005,475],{"class":273},[259,2007,2008],{"class":261,"line":993},[259,2009,399],{"emptyLinePlaceholder":398},[259,2011,2012],{"class":261,"line":999},[259,2013,2014],{"class":372},"// Send multiple events in one request\n",[259,2016,2018,2020,2022,2025,2027],{"class":261,"line":2017},9,[259,2019,624],{"class":265},[259,2021,1951],{"class":411},[259,2023,2024],{"class":273},"(events",[259,2026,461],{"class":269},[259,2028,430],{"class":269},[259,2030,2032,2034,2036,2038,2040,2042],{"class":261,"line":2031},10,[259,2033,1988],{"class":450},[259,2035,528],{"class":269},[259,2037,283],{"class":269},[259,2039,1995],{"class":286},[259,2041,453],{"class":269},[259,2043,1048],{"class":269},[259,2045,2047,2049],{"class":261,"line":2046},11,[259,2048,472],{"class":269},[259,2050,475],{"class":273},[226,2052,2053],{},"For custom events, use the events-specific functions:",[249,2055,2057],{"className":251,"code":2056,"filename":1935,"language":253,"meta":254,"style":254},"import { sendToPostHogEvents, sendBatchToPostHogEvents, toPostHogEvent } from 'evlog/posthog'\n\n// Send a single custom event\nawait sendToPostHogEvents(event, {\n  apiKey: 'phc_xxx',\n})\n\n// Send multiple custom events in one request\nawait sendBatchToPostHogEvents(events, {\n  apiKey: 'phc_xxx',\n})\n\n// Convert event to PostHog format (for inspection)\nconst posthogEvent = toPostHogEvent(event, { apiKey: 'phc_xxx' })\n",[256,2058,2059,2088,2092,2097,2109,2123,2129,2133,2138,2150,2164,2170,2175,2181],{"__ignoreMap":254},[259,2060,2061,2063,2065,2068,2070,2073,2075,2078,2080,2082,2084,2086],{"class":261,"line":262},[259,2062,266],{"class":265},[259,2064,270],{"class":269},[259,2066,2067],{"class":273}," sendToPostHogEvents",[259,2069,461],{"class":269},[259,2071,2072],{"class":273}," sendBatchToPostHogEvents",[259,2074,461],{"class":269},[259,2076,2077],{"class":273}," toPostHogEvent",[259,2079,277],{"class":269},[259,2081,280],{"class":265},[259,2083,283],{"class":269},[259,2085,287],{"class":286},[259,2087,290],{"class":269},[259,2089,2090],{"class":261,"line":376},[259,2091,399],{"emptyLinePlaceholder":398},[259,2093,2094],{"class":261,"line":395},[259,2095,2096],{"class":372},"// Send a single custom event\n",[259,2098,2099,2101,2103,2105,2107],{"class":261,"line":402},[259,2100,624],{"class":265},[259,2102,2067],{"class":411},[259,2104,1979],{"class":273},[259,2106,461],{"class":269},[259,2108,430],{"class":269},[259,2110,2111,2113,2115,2117,2119,2121],{"class":261,"line":433},[259,2112,1988],{"class":450},[259,2114,528],{"class":269},[259,2116,283],{"class":269},[259,2118,1995],{"class":286},[259,2120,453],{"class":269},[259,2122,1048],{"class":269},[259,2124,2125,2127],{"class":261,"line":469},[259,2126,472],{"class":269},[259,2128,475],{"class":273},[259,2130,2131],{"class":261,"line":993},[259,2132,399],{"emptyLinePlaceholder":398},[259,2134,2135],{"class":261,"line":999},[259,2136,2137],{"class":372},"// Send multiple custom events in one request\n",[259,2139,2140,2142,2144,2146,2148],{"class":261,"line":2017},[259,2141,624],{"class":265},[259,2143,2072],{"class":411},[259,2145,2024],{"class":273},[259,2147,461],{"class":269},[259,2149,430],{"class":269},[259,2151,2152,2154,2156,2158,2160,2162],{"class":261,"line":2031},[259,2153,1988],{"class":450},[259,2155,528],{"class":269},[259,2157,283],{"class":269},[259,2159,1995],{"class":286},[259,2161,453],{"class":269},[259,2163,1048],{"class":269},[259,2165,2166,2168],{"class":261,"line":2046},[259,2167,472],{"class":269},[259,2169,475],{"class":273},[259,2171,2173],{"class":261,"line":2172},12,[259,2174,399],{"emptyLinePlaceholder":398},[259,2176,2178],{"class":261,"line":2177},13,[259,2179,2180],{"class":372},"// Convert event to PostHog format (for inspection)\n",[259,2182,2184,2186,2189,2191,2193,2195,2197,2199,2202,2204,2206,2208,2210,2212],{"class":261,"line":2183},14,[259,2185,1020],{"class":426},[259,2187,2188],{"class":273}," posthogEvent ",[259,2190,351],{"class":269},[259,2192,2077],{"class":411},[259,2194,1979],{"class":273},[259,2196,461],{"class":269},[259,2198,270],{"class":269},[259,2200,2201],{"class":450}," apiKey",[259,2203,528],{"class":269},[259,2205,283],{"class":269},[259,2207,1995],{"class":286},[259,2209,453],{"class":269},[259,2211,277],{"class":269},[259,2213,475],{"class":273},[242,2215,2217],{"id":2216},"next-steps","Next Steps",[1163,2219,2220,2226,2232,2237],{},[303,2221,2222,2225],{},[229,2223,2224],{"href":150},"Axiom Adapter"," - Send logs to Axiom",[303,2227,2228,2231],{},[229,2229,2230],{"href":155},"OTLP Adapter"," - Send logs via OpenTelemetry Protocol",[303,2233,2234,2236],{},[229,2235,174],{"href":175}," - Build your own adapter",[303,2238,2239,2241],{},[229,2240,121],{"href":122}," - Security and production tips",[2243,2244,2245],"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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":254,"searchDepth":376,"depth":376,"links":2247},[2248,2249,2254,2260,2261,2262,2263,2269,2274,2275],{"id":244,"depth":376,"text":15},{"id":293,"depth":376,"text":20,"children":2250},[2251,2252,2253],{"id":297,"depth":395,"text":298},{"id":334,"depth":395,"text":335},{"id":357,"depth":395,"text":358},{"id":812,"depth":376,"text":813,"children":2255},[2256,2257,2258,2259],{"id":853,"depth":395,"text":854},{"id":911,"depth":395,"text":912},{"id":1006,"depth":395,"text":1007},{"id":1070,"depth":395,"text":1071},{"id":1150,"depth":376,"text":1151},{"id":1196,"depth":376,"text":1197},{"id":1274,"depth":376,"text":1275},{"id":1298,"depth":376,"text":1299,"children":2264},[2265,2266,2267,2268],{"id":1410,"depth":395,"text":1411},{"id":1518,"depth":395,"text":1519},{"id":1613,"depth":395,"text":1614},{"id":1649,"depth":395,"text":1650},{"id":1858,"depth":376,"text":1859,"children":2270},[2271,2272,2273],{"id":1862,"depth":395,"text":1863},{"id":1877,"depth":395,"text":1878},{"id":1904,"depth":395,"text":1905},{"id":1927,"depth":376,"text":1928},{"id":2216,"depth":376,"text":2217},"Send wide events to PostHog Logs via OTLP for structured log querying, debugging, and observability in your PostHog dashboard.","md",[2279,2285],{"label":2280,"icon":2281,"to":308,"target":2282,"color":2283,"variant":2284},"PostHog Dashboard","i-lucide-external-link","_blank","neutral","subtle",{"label":2224,"icon":152,"to":150,"color":2283,"variant":2284},{},{"title":159,"icon":162},{"title":221,"description":2276},"RRMqt4fPkMQfGLB6zytqup41AeItTD1AsdVc597YHs8",[2291,2293],{"title":154,"path":155,"stem":156,"description":2292,"icon":157,"children":-1},"Send logs via OpenTelemetry Protocol (OTLP) to Grafana, Datadog, Honeycomb, and any compatible backend. Supports gRPC and HTTP transports.",{"title":164,"path":165,"stem":166,"description":2294,"icon":167,"children":-1},"Send structured logs to Sentry Logs for high-cardinality querying and debugging. Zero-config setup with environment variables.",1773097848248]