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