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