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