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