[{"data":1,"prerenderedAt":2126},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-cloud-datadog":444,"-integrate-adapters-cloud-datadog-surround":2121},[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":2108,"extension":2109,"links":2110,"meta":2117,"navigation":2118,"path":129,"seo":2119,"stem":130,"__hash__":2120},"docs\u002F3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog.md","Datadog Adapter",{"type":448,"value":449,"toc":2084},"minimark",[450,476,483,525,529,532,575,578,583,596,600,637,641,1216,1234,1237,1240,1271,1275,1343,1347,1430,1434,1507,1511,1633,1637,1640,1725,1766,1775,1779,1848,1852,1875,1879,1883,1892,1901,1905,1908,1912,1923,1927,2062,2066,2080],[451,452,453,459,460,465,466,470,471,475],"p",{},[454,455,128],"a",{"href":456,"rel":457},"https:\u002F\u002Fwww.datadoghq.com",[458],"nofollow"," is a monitoring and security platform. The evlog Datadog adapter sends your wide events to ",[454,461,464],{"href":462,"rel":463},"https:\u002F\u002Fdocs.datadoghq.com\u002Flogs\u002F",[458],"Datadog Logs"," using the ",[467,468,469],"strong",{},"HTTP Logs intake API (v2)"," with the ",[472,473,474],"code",{},"DD-API-KEY"," header.",[451,477,478,479,482],{},"For OpenTelemetry-based ingestion instead, see the ",[454,480,481],{"href":109},"OTLP adapter",".",[484,485,488,491,513],"prompt",{":actions":486,"description":487,"icon":131},"[\"copy\",\"cursor\",\"windsurf\"]","Add the Datadog drain adapter",[451,489,490],{},"Add the Datadog drain adapter to send evlog wide events to Datadog Logs.",[492,493,494,498,501,504,507,510],"ol",{},[495,496,497],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[495,499,500],{},"Install evlog if not already installed",[495,502,503],{},"Import createDatadogDrain from 'evlog\u002Fdatadog'",[495,505,506],{},"Wire createDatadogDrain() into my framework's drain configuration",[495,508,509],{},"Set DD_API_KEY (or DATADOG_API_KEY) and optionally DD_SITE in .env",[495,511,512],{},"Test by triggering a request and checking Log Explorer in Datadog",[451,514,515,516,520,521],{},"Adapter docs: ",[454,517,518],{"href":518,"rel":519},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog",[458],"\nFramework setup: ",[454,522,523],{"href":523,"rel":524},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[458],[526,527,20],"h2",{"id":528},"installation",[451,530,531],{},"The Datadog adapter comes bundled with evlog:",[533,534,540],"pre",{"className":535,"code":536,"filename":537,"language":538,"meta":539,"style":539},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createDatadogDrain } from 'evlog\u002Fdatadog'\n","src\u002Findex.ts","typescript","",[472,541,542],{"__ignoreMap":539},[543,544,547,551,555,559,562,565,568,572],"span",{"class":545,"line":546},"line",1,[543,548,550],{"class":549},"s7zQu","import",[543,552,554],{"class":553},"sMK4o"," {",[543,556,558],{"class":557},"sTEyZ"," createDatadogDrain",[543,560,561],{"class":553}," }",[543,563,564],{"class":549}," from",[543,566,567],{"class":553}," '",[543,569,571],{"class":570},"sfazB","evlog\u002Fdatadog",[543,573,574],{"class":553},"'\n",[526,576,25],{"id":577},"quick-start",[579,580,582],"h3",{"id":581},"_1-get-your-api-key","1. Get your API key",[492,584,585,593],{},[495,586,587,588],{},"Open ",[454,589,592],{"href":590,"rel":591},"https:\u002F\u002Fapp.datadoghq.com\u002Forganization-settings\u002Fapi-keys",[458],"Datadog Organization Settings → API Keys",[495,594,595],{},"Create or copy an API key with permission to submit logs",[579,597,599],{"id":598},"_2-set-environment-variables","2. Set environment variables",[533,601,606],{"className":602,"code":603,"filename":604,"language":605,"meta":539,"style":539},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","DD_API_KEY=your-api-key\n# Optional — defaults to datadoghq.com (US1)\nDD_SITE=datadoghq.eu\n",".env","bash",[472,607,608,619,626],{"__ignoreMap":539},[543,609,610,613,616],{"class":545,"line":546},[543,611,612],{"class":557},"DD_API_KEY",[543,614,615],{"class":553},"=",[543,617,618],{"class":570},"your-api-key\n",[543,620,622],{"class":545,"line":621},2,[543,623,625],{"class":624},"sHwdD","# Optional — defaults to datadoghq.com (US1)\n",[543,627,629,632,634],{"class":545,"line":628},3,[543,630,631],{"class":557},"DD_SITE",[543,633,615],{"class":553},[543,635,636],{"class":570},"datadoghq.eu\n",[579,638,640],{"id":639},"_3-wire-the-drain-to-your-framework","3. Wire the drain to your framework",[642,643,644,755,886,948,1002,1061,1115,1168],"code-group",{},[533,645,648],{"className":535,"code":646,"filename":647,"language":538,"meta":539,"style":539},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nimport { createDatadogDrain } from 'evlog\u002Fdatadog'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createDatadogDrain())\n})\n","Nuxt \u002F Nitro",[472,649,650,655,673,679,711,746],{"__ignoreMap":539},[543,651,652],{"class":545,"line":546},[543,653,654],{"class":624},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[543,656,657,659,661,663,665,667,669,671],{"class":545,"line":621},[543,658,550],{"class":549},[543,660,554],{"class":553},[543,662,558],{"class":557},[543,664,561],{"class":553},[543,666,564],{"class":549},[543,668,567],{"class":553},[543,670,571],{"class":570},[543,672,574],{"class":553},[543,674,675],{"class":545,"line":628},[543,676,678],{"emptyLinePlaceholder":677},true,"\n",[543,680,682,685,688,692,695,697,701,704,708],{"class":545,"line":681},4,[543,683,684],{"class":549},"export",[543,686,687],{"class":549}," default",[543,689,691],{"class":690},"s2Zo4"," defineNitroPlugin",[543,693,694],{"class":557},"(",[543,696,694],{"class":553},[543,698,700],{"class":699},"sHdIc","nitroApp",[543,702,703],{"class":553},")",[543,705,707],{"class":706},"spNyl"," =>",[543,709,710],{"class":553}," {\n",[543,712,714,717,719,722,724,727,730,733,736,738,741,743],{"class":545,"line":713},5,[543,715,716],{"class":557},"  nitroApp",[543,718,482],{"class":553},[543,720,721],{"class":557},"hooks",[543,723,482],{"class":553},[543,725,726],{"class":690},"hook",[543,728,694],{"class":729},"swJcz",[543,731,732],{"class":553},"'",[543,734,735],{"class":570},"evlog:drain",[543,737,732],{"class":553},[543,739,740],{"class":553},",",[543,742,558],{"class":690},[543,744,745],{"class":729},"())\n",[543,747,749,752],{"class":545,"line":748},6,[543,750,751],{"class":553},"}",[543,753,754],{"class":557},")\n",[533,756,758],{"className":535,"code":757,"filename":172,"language":538,"meta":539,"style":539},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createDatadogDrain } from 'evlog\u002Fdatadog'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: createDatadogDrain(),\n})\n",[472,759,760,765,785,803,807,846,864,879],{"__ignoreMap":539},[543,761,762],{"class":545,"line":546},[543,763,764],{"class":624},"\u002F\u002F lib\u002Fevlog.ts\n",[543,766,767,769,771,774,776,778,780,783],{"class":545,"line":621},[543,768,550],{"class":549},[543,770,554],{"class":553},[543,772,773],{"class":557}," createEvlog",[543,775,561],{"class":553},[543,777,564],{"class":549},[543,779,567],{"class":553},[543,781,782],{"class":570},"evlog\u002Fnext",[543,784,574],{"class":553},[543,786,787,789,791,793,795,797,799,801],{"class":545,"line":628},[543,788,550],{"class":549},[543,790,554],{"class":553},[543,792,558],{"class":557},[543,794,561],{"class":553},[543,796,564],{"class":549},[543,798,567],{"class":553},[543,800,571],{"class":570},[543,802,574],{"class":553},[543,804,805],{"class":545,"line":681},[543,806,678],{"emptyLinePlaceholder":677},[543,808,809,811,814,816,819,821,824,826,829,831,834,836,839,841,843],{"class":545,"line":713},[543,810,684],{"class":549},[543,812,813],{"class":706}," const",[543,815,554],{"class":553},[543,817,818],{"class":557}," withEvlog",[543,820,740],{"class":553},[543,822,823],{"class":557}," useLogger",[543,825,740],{"class":553},[543,827,828],{"class":557}," log",[543,830,740],{"class":553},[543,832,833],{"class":557}," createError ",[543,835,751],{"class":553},[543,837,838],{"class":553}," =",[543,840,773],{"class":690},[543,842,694],{"class":557},[543,844,845],{"class":553},"{\n",[543,847,848,851,854,856,859,861],{"class":545,"line":748},[543,849,850],{"class":729},"  service",[543,852,853],{"class":553},":",[543,855,567],{"class":553},[543,857,858],{"class":570},"my-app",[543,860,732],{"class":553},[543,862,863],{"class":553},",\n",[543,865,867,870,872,874,877],{"class":545,"line":866},7,[543,868,869],{"class":729},"  drain",[543,871,853],{"class":553},[543,873,558],{"class":690},[543,875,876],{"class":557},"()",[543,878,863],{"class":553},[543,880,882,884],{"class":545,"line":881},8,[543,883,751],{"class":553},[543,885,754],{"class":557},[533,887,889],{"className":535,"code":888,"filename":202,"language":538,"meta":539,"style":539},"import { createDatadogDrain } from 'evlog\u002Fdatadog'\n\napp.use(evlog({ drain: createDatadogDrain() }))\n",[472,890,891,909,913],{"__ignoreMap":539},[543,892,893,895,897,899,901,903,905,907],{"class":545,"line":546},[543,894,550],{"class":549},[543,896,554],{"class":553},[543,898,558],{"class":557},[543,900,561],{"class":553},[543,902,564],{"class":549},[543,904,567],{"class":553},[543,906,571],{"class":570},[543,908,574],{"class":553},[543,910,911],{"class":545,"line":621},[543,912,678],{"emptyLinePlaceholder":677},[543,914,915,918,920,923,925,928,930,933,936,938,940,943,945],{"class":545,"line":628},[543,916,917],{"class":557},"app",[543,919,482],{"class":553},[543,921,922],{"class":690},"use",[543,924,694],{"class":557},[543,926,927],{"class":690},"evlog",[543,929,694],{"class":557},[543,931,932],{"class":553},"{",[543,934,935],{"class":729}," drain",[543,937,853],{"class":553},[543,939,558],{"class":690},[543,941,942],{"class":557},"() ",[543,944,751],{"class":553},[543,946,947],{"class":557},"))\n",[533,949,950],{"className":535,"code":888,"filename":197,"language":538,"meta":539,"style":539},[472,951,952,970,974],{"__ignoreMap":539},[543,953,954,956,958,960,962,964,966,968],{"class":545,"line":546},[543,955,550],{"class":549},[543,957,554],{"class":553},[543,959,558],{"class":557},[543,961,561],{"class":553},[543,963,564],{"class":549},[543,965,567],{"class":553},[543,967,571],{"class":570},[543,969,574],{"class":553},[543,971,972],{"class":545,"line":621},[543,973,678],{"emptyLinePlaceholder":677},[543,975,976,978,980,982,984,986,988,990,992,994,996,998,1000],{"class":545,"line":628},[543,977,917],{"class":557},[543,979,482],{"class":553},[543,981,922],{"class":690},[543,983,694],{"class":557},[543,985,927],{"class":690},[543,987,694],{"class":557},[543,989,932],{"class":553},[543,991,935],{"class":729},[543,993,853],{"class":553},[543,995,558],{"class":690},[543,997,942],{"class":557},[543,999,751],{"class":553},[543,1001,947],{"class":557},[533,1003,1005],{"className":535,"code":1004,"filename":207,"language":538,"meta":539,"style":539},"import { createDatadogDrain } from 'evlog\u002Fdatadog'\n\nawait app.register(evlog, { drain: createDatadogDrain() })\n",[472,1006,1007,1025,1029],{"__ignoreMap":539},[543,1008,1009,1011,1013,1015,1017,1019,1021,1023],{"class":545,"line":546},[543,1010,550],{"class":549},[543,1012,554],{"class":553},[543,1014,558],{"class":557},[543,1016,561],{"class":553},[543,1018,564],{"class":549},[543,1020,567],{"class":553},[543,1022,571],{"class":570},[543,1024,574],{"class":553},[543,1026,1027],{"class":545,"line":621},[543,1028,678],{"emptyLinePlaceholder":677},[543,1030,1031,1034,1037,1039,1042,1045,1047,1049,1051,1053,1055,1057,1059],{"class":545,"line":628},[543,1032,1033],{"class":549},"await",[543,1035,1036],{"class":557}," app",[543,1038,482],{"class":553},[543,1040,1041],{"class":690},"register",[543,1043,1044],{"class":557},"(evlog",[543,1046,740],{"class":553},[543,1048,554],{"class":553},[543,1050,935],{"class":729},[543,1052,853],{"class":553},[543,1054,558],{"class":690},[543,1056,942],{"class":557},[543,1058,751],{"class":553},[543,1060,754],{"class":557},[533,1062,1063],{"className":535,"code":888,"filename":212,"language":538,"meta":539,"style":539},[472,1064,1065,1083,1087],{"__ignoreMap":539},[543,1066,1067,1069,1071,1073,1075,1077,1079,1081],{"class":545,"line":546},[543,1068,550],{"class":549},[543,1070,554],{"class":553},[543,1072,558],{"class":557},[543,1074,561],{"class":553},[543,1076,564],{"class":549},[543,1078,567],{"class":553},[543,1080,571],{"class":570},[543,1082,574],{"class":553},[543,1084,1085],{"class":545,"line":621},[543,1086,678],{"emptyLinePlaceholder":677},[543,1088,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113],{"class":545,"line":628},[543,1090,917],{"class":557},[543,1092,482],{"class":553},[543,1094,922],{"class":690},[543,1096,694],{"class":557},[543,1098,927],{"class":690},[543,1100,694],{"class":557},[543,1102,932],{"class":553},[543,1104,935],{"class":729},[543,1106,853],{"class":553},[543,1108,558],{"class":690},[543,1110,942],{"class":557},[543,1112,751],{"class":553},[543,1114,947],{"class":557},[533,1116,1118],{"className":535,"code":1117,"filename":192,"language":538,"meta":539,"style":539},"import { createDatadogDrain } from 'evlog\u002Fdatadog'\n\nEvlogModule.forRoot({ drain: createDatadogDrain() })\n",[472,1119,1120,1138,1142],{"__ignoreMap":539},[543,1121,1122,1124,1126,1128,1130,1132,1134,1136],{"class":545,"line":546},[543,1123,550],{"class":549},[543,1125,554],{"class":553},[543,1127,558],{"class":557},[543,1129,561],{"class":553},[543,1131,564],{"class":549},[543,1133,567],{"class":553},[543,1135,571],{"class":570},[543,1137,574],{"class":553},[543,1139,1140],{"class":545,"line":621},[543,1141,678],{"emptyLinePlaceholder":677},[543,1143,1144,1147,1149,1152,1154,1156,1158,1160,1162,1164,1166],{"class":545,"line":628},[543,1145,1146],{"class":557},"EvlogModule",[543,1148,482],{"class":553},[543,1150,1151],{"class":690},"forRoot",[543,1153,694],{"class":557},[543,1155,932],{"class":553},[543,1157,935],{"class":729},[543,1159,853],{"class":553},[543,1161,558],{"class":690},[543,1163,942],{"class":557},[543,1165,751],{"class":553},[543,1167,754],{"class":557},[533,1169,1171],{"className":535,"code":1170,"filename":227,"language":538,"meta":539,"style":539},"import { createDatadogDrain } from 'evlog\u002Fdatadog'\n\ninitLogger({ drain: createDatadogDrain() })\n",[472,1172,1173,1191,1195],{"__ignoreMap":539},[543,1174,1175,1177,1179,1181,1183,1185,1187,1189],{"class":545,"line":546},[543,1176,550],{"class":549},[543,1178,554],{"class":553},[543,1180,558],{"class":557},[543,1182,561],{"class":553},[543,1184,564],{"class":549},[543,1186,567],{"class":553},[543,1188,571],{"class":570},[543,1190,574],{"class":553},[543,1192,1193],{"class":545,"line":621},[543,1194,678],{"emptyLinePlaceholder":677},[543,1196,1197,1200,1202,1204,1206,1208,1210,1212,1214],{"class":545,"line":628},[543,1198,1199],{"class":690},"initLogger",[543,1201,694],{"class":557},[543,1203,932],{"class":553},[543,1205,935],{"class":729},[543,1207,853],{"class":553},[543,1209,558],{"class":690},[543,1211,942],{"class":557},[543,1213,751],{"class":553},[543,1215,754],{"class":557},[451,1217,1218,1219,1222,1223,1226,1227,1229,1230,1233],{},"Wide events appear in ",[467,1220,1221],{},"Logs → Explorer",". The adapter sets ",[472,1224,1225],{},"ddsource"," to ",[472,1228,927],{}," and ",[472,1231,1232],{},"message"," to a JSON string of the full wide event for easy JSON parsing in pipelines.",[526,1235,419],{"id":1236},"configuration",[451,1238,1239],{},"The adapter reads configuration from multiple sources (highest priority first):",[492,1241,1242,1251,1265],{},[495,1243,1244,1247,1248],{},[467,1245,1246],{},"Overrides"," passed to ",[472,1249,1250],{},"createDatadogDrain()",[495,1252,1253,1256,1257,1260,1261,1264],{},[467,1254,1255],{},"Runtime config"," at ",[472,1258,1259],{},"runtimeConfig.datadog"," or ",[472,1262,1263],{},"runtimeConfig.evlog.datadog"," (Nuxt\u002FNitro)",[495,1266,1267,1270],{},[467,1268,1269],{},"Environment variables"," — see table below",[579,1272,1274],{"id":1273},"environment-variables","Environment Variables",[1276,1277,1278,1291],"table",{},[1279,1280,1281],"thead",{},[1282,1283,1284,1288],"tr",{},[1285,1286,1287],"th",{},"Variable",[1285,1289,1290],{},"Description",[1292,1293,1294,1307,1330],"tbody",{},[1282,1295,1296,1301],{},[1297,1298,1299],"td",{},[472,1300,612],{},[1297,1302,1303,1304],{},"Datadog API key (required). Also: ",[472,1305,1306],{},"DATADOG_API_KEY",[1282,1308,1309,1313],{},[1297,1310,1311],{},[472,1312,631],{},[1297,1314,1315,1316,1319,1320,1319,1323,1326,1327],{},"Site hostname (e.g. ",[472,1317,1318],{},"datadoghq.com",", ",[472,1321,1322],{},"datadoghq.eu",[472,1324,1325],{},"us3.datadoghq.com","). Also: ",[472,1328,1329],{},"DATADOG_SITE",[1282,1331,1332,1337],{},[1297,1333,1334],{},[472,1335,1336],{},"DATADOG_LOGS_URL",[1297,1338,1339,1340],{},"Full intake URL — overrides URL derived from ",[472,1341,1342],{},"site",[579,1344,1346],{"id":1345},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[533,1348,1351],{"className":535,"code":1349,"filename":1350,"language":538,"meta":539,"style":539},"export default defineNuxtConfig({\n  runtimeConfig: {\n    datadog: {\n      apiKey: '', \u002F\u002F Set via DD_API_KEY or DATADOG_API_KEY\n      site: 'datadoghq.eu',\n    },\n  },\n})\n","nuxt.config.ts",[472,1352,1353,1366,1375,1384,1399,1414,1419,1424],{"__ignoreMap":539},[543,1354,1355,1357,1359,1362,1364],{"class":545,"line":546},[543,1356,684],{"class":549},[543,1358,687],{"class":549},[543,1360,1361],{"class":690}," defineNuxtConfig",[543,1363,694],{"class":557},[543,1365,845],{"class":553},[543,1367,1368,1371,1373],{"class":545,"line":621},[543,1369,1370],{"class":729},"  runtimeConfig",[543,1372,853],{"class":553},[543,1374,710],{"class":553},[543,1376,1377,1380,1382],{"class":545,"line":628},[543,1378,1379],{"class":729},"    datadog",[543,1381,853],{"class":553},[543,1383,710],{"class":553},[543,1385,1386,1389,1391,1394,1396],{"class":545,"line":681},[543,1387,1388],{"class":729},"      apiKey",[543,1390,853],{"class":553},[543,1392,1393],{"class":553}," ''",[543,1395,740],{"class":553},[543,1397,1398],{"class":624}," \u002F\u002F Set via DD_API_KEY or DATADOG_API_KEY\n",[543,1400,1401,1404,1406,1408,1410,1412],{"class":545,"line":713},[543,1402,1403],{"class":729},"      site",[543,1405,853],{"class":553},[543,1407,567],{"class":553},[543,1409,1322],{"class":570},[543,1411,732],{"class":553},[543,1413,863],{"class":553},[543,1415,1416],{"class":545,"line":748},[543,1417,1418],{"class":553},"    },\n",[543,1420,1421],{"class":545,"line":866},[543,1422,1423],{"class":553},"  },\n",[543,1425,1426,1428],{"class":545,"line":881},[543,1427,751],{"class":553},[543,1429,754],{"class":557},[579,1431,1433],{"id":1432},"override-options","Override Options",[533,1435,1438],{"className":535,"code":1436,"filename":1437,"language":538,"meta":539,"style":539},"const drain = createDatadogDrain({\n  apiKey: '***',\n  site: 'us5.datadoghq.com',\n  timeout: 10000,\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[472,1439,1440,1456,1472,1488,1501],{"__ignoreMap":539},[543,1441,1442,1445,1448,1450,1452,1454],{"class":545,"line":546},[543,1443,1444],{"class":706},"const",[543,1446,1447],{"class":557}," drain ",[543,1449,615],{"class":553},[543,1451,558],{"class":690},[543,1453,694],{"class":557},[543,1455,845],{"class":553},[543,1457,1458,1461,1463,1465,1468,1470],{"class":545,"line":621},[543,1459,1460],{"class":729},"  apiKey",[543,1462,853],{"class":553},[543,1464,567],{"class":553},[543,1466,1467],{"class":570},"***",[543,1469,732],{"class":553},[543,1471,863],{"class":553},[543,1473,1474,1477,1479,1481,1484,1486],{"class":545,"line":628},[543,1475,1476],{"class":729},"  site",[543,1478,853],{"class":553},[543,1480,567],{"class":553},[543,1482,1483],{"class":570},"us5.datadoghq.com",[543,1485,732],{"class":553},[543,1487,863],{"class":553},[543,1489,1490,1493,1495,1499],{"class":545,"line":681},[543,1491,1492],{"class":729},"  timeout",[543,1494,853],{"class":553},[543,1496,1498],{"class":1497},"sbssI"," 10000",[543,1500,863],{"class":553},[543,1502,1503,1505],{"class":545,"line":713},[543,1504,751],{"class":553},[543,1506,754],{"class":557},[579,1508,1510],{"id":1509},"full-configuration-reference","Full Configuration Reference",[1276,1512,1513,1528],{},[1279,1514,1515],{},[1282,1516,1517,1520,1523,1526],{},[1285,1518,1519],{},"Option",[1285,1521,1522],{},"Type",[1285,1524,1525],{},"Default",[1285,1527,1290],{},[1292,1529,1530,1548,1568,1594,1614],{},[1282,1531,1532,1537,1542,1545],{},[1297,1533,1534],{},[472,1535,1536],{},"apiKey",[1297,1538,1539],{},[472,1540,1541],{},"string",[1297,1543,1544],{},"—",[1297,1546,1547],{},"Datadog API key (required)",[1282,1549,1550,1554,1558,1562],{},[1297,1551,1552],{},[472,1553,1342],{},[1297,1555,1556],{},[472,1557,1541],{},[1297,1559,1560],{},[472,1561,1318],{},[1297,1563,1564,1565],{},"Site for intake host ",[472,1566,1567],{},"http-intake.logs.${site}",[1282,1569,1570,1575,1579,1584],{},[1297,1571,1572],{},[472,1573,1574],{},"intakeUrl",[1297,1576,1577],{},[472,1578,1541],{},[1297,1580,1581,1582],{},"from ",[472,1583,1342],{},[1297,1585,1586,1587,1590,1591],{},"Full ",[472,1588,1589],{},"POST"," URL for ",[472,1592,1593],{},"\u002Fapi\u002Fv2\u002Flogs",[1282,1595,1596,1601,1606,1611],{},[1297,1597,1598],{},[472,1599,1600],{},"timeout",[1297,1602,1603],{},[472,1604,1605],{},"number",[1297,1607,1608],{},[472,1609,1610],{},"5000",[1297,1612,1613],{},"Request timeout (ms)",[1282,1615,1616,1621,1625,1630],{},[1297,1617,1618],{},[472,1619,1620],{},"retries",[1297,1622,1623],{},[472,1624,1605],{},[1297,1626,1627],{},[472,1628,1629],{},"2",[1297,1631,1632],{},"Retries on transient failures",[526,1634,1636],{"id":1635},"log-shape","Log shape",[451,1638,1639],{},"Each wide event becomes one Datadog log with:",[1641,1642,1643,1658,1683,1714],"ul",{},[495,1644,1645,1649,1650,1653,1654,1657],{},[467,1646,1647],{},[472,1648,1232],{}," — short one-line summary for the list view (e.g. ",[472,1651,1652],{},"ERROR GET \u002Fapi\u002Fcheckout (400)","), built with ",[472,1655,1656],{},"formatDatadogMessageLine",". Easier to scan than a full JSON blob in Live Tail.",[495,1659,1660,1664,1665,1668,1669,1674,1675,1680,1681,482],{},[467,1661,1662],{},[472,1663,927],{}," — full wide event as a ",[467,1666,1667],{},"JSON object"," (not a string). Numeric HTTP ",[467,1670,1671],{},[472,1672,1673],{},"status"," fields anywhere in the tree are renamed to ",[467,1676,1677],{},[472,1678,1679],{},"httpStatusCode"," so they never clash with Datadog’s reserved severity ",[472,1682,1673],{},[495,1684,1685,1319,1690,1694,1695,1699,1700,1319,1702,1699,1707,1710,1711],{},[467,1686,1687],{},[472,1688,1689],{},"service",[467,1691,1692],{},[472,1693,1673],{}," (Datadog severity — drives Live Tail color), ",[467,1696,1697],{},[472,1698,1225],{},": ",[472,1701,927],{},[467,1703,1704],{},[472,1705,1706],{},"ddtags",[472,1708,1709],{},"env:…"," and optional ",[472,1712,1713],{},"version:…",[495,1715,1716,1721,1722],{},[467,1717,1718],{},[472,1719,1720],{},"timestamp",": Unix milliseconds from ",[472,1723,1724],{},"WideEvent.timestamp",[451,1726,1727,1732,1733,1738,1739,1743,1744,1747,1748,1750,1751,1754,1755,1760,1761,482],{},[467,1728,1729,1730,703],{},"Severity (",[472,1731,1673],{}," at intake root is computed by the adapter from the wide event’s ",[467,1734,1735],{},[472,1736,1737],{},"level"," and HTTP ",[467,1740,1741],{},[472,1742,1673],{}," (",[472,1745,1746],{},"resolveDatadogLogStatus"," in ",[472,1749,571],{},"). Business-only fields on ",[467,1752,1753],{},"HTTP 200"," stay ",[467,1756,1757],{},[472,1758,1759],{},"info"," unless you call ",[467,1762,1763],{},[472,1764,1765],{},"log.error()",[451,1767,1768,1769,1772,1773,482],{},"For advanced use, ",[472,1770,1771],{},"sanitizeWideEventForDatadog(event)"," returns only the sanitized object you would store under ",[472,1774,927],{},[526,1776,1778],{"id":1777},"querying-in-datadog","Querying in Datadog",[1641,1780,1781,1795,1818,1828],{},[495,1782,1783,1699,1786,1319,1789,1319,1792],{},[467,1784,1785],{},"Log Explorer",[472,1787,1788],{},"source:evlog",[472,1790,1791],{},"service:your-app",[472,1793,1794],{},"status:error",[495,1796,1797,1800,1801,1319,1804,1319,1807,1810,1811,1815,1816],{},[467,1798,1799],{},"Facets",": prefer ",[472,1802,1803],{},"@evlog.path",[472,1805,1806],{},"@evlog.requestId",[472,1808,1809],{},"@evlog.level",", etc. — core fields are under ",[467,1812,1813],{},[472,1814,927],{},", not a JSON string in ",[472,1817,1232],{},[495,1819,1820,1823,1824,1827],{},[467,1821,1822],{},"Metrics",": log-based metrics on ",[472,1825,1826],{},"@evlog.*"," attributes",[495,1829,1830,1833,1834,1836,1837,1839,1840,1844,1845,1847],{},[467,1831,1832],{},"Pipelines",": if you previously parsed a full JSON ",[467,1835,1541],{}," inside ",[472,1838,1232],{},", move those facets to ",[467,1841,1842],{},[472,1843,1826],{},". The ",[472,1846,1232],{}," field is now a short summary line only.",[526,1849,1851],{"id":1850},"simple-logs-vs-wide-events","Simple logs vs wide events",[451,1853,1854,1855,1860,1861,1864,1865,1870,1871,482],{},"Plain-text lines in Live Tail (e.g. “Form field is empty”) usually come from ",[467,1856,1857],{},[472,1858,1859],{},"log.info('tag', 'msg')"," or similar, not from the ",[467,1862,1863],{},"wide event"," sent on ",[467,1866,1867],{},[472,1868,1869],{},"emit()",". Those lines go to the console (and any Agent-based log stream), while the Datadog drain sends one structured log per wide event under ",[467,1872,1873],{},[472,1874,1788],{},[526,1876,1878],{"id":1877},"troubleshooting","Troubleshooting",[579,1880,1882],{"id":1881},"missing-api-key","Missing API key",[533,1884,1890],{"className":1885,"code":1887,"filename":1888,"language":1889,"meta":539},[1886],"language-text","[evlog\u002Fdatadog] Missing API key. Set DATADOG_API_KEY, DD_API_KEY...\n","Console","text",[472,1891,1887],{"__ignoreMap":539},[451,1893,1894,1895,1897,1898,1900],{},"Set ",[472,1896,612],{}," (or unprefixed ",[472,1899,1306],{},") and restart the process.",[579,1902,1904],{"id":1903},"_403-forbidden","403 Forbidden",[451,1906,1907],{},"The API key may lack log ingestion permission or belong to the wrong organization. Verify the key in Datadog and try a new key.",[579,1909,1911],{"id":1910},"wrong-region-site","Wrong region \u002F site",[451,1913,1914,1915,1917,1918,1920,1921,482],{},"If logs never appear, confirm ",[472,1916,631],{}," matches your Datadog account (e.g. EU: ",[472,1919,1322],{},"). For a custom intake URL, set ",[472,1922,1336],{},[526,1924,1926],{"id":1925},"direct-api-usage","Direct API usage",[533,1928,1931],{"className":535,"code":1929,"filename":1930,"language":538,"meta":539,"style":539},"import { sendToDatadog, sendBatchToDatadog } from 'evlog\u002Fdatadog'\n\nawait sendToDatadog(event, {\n  apiKey: process.env.DD_API_KEY!,\n  site: process.env.DD_SITE,\n})\n\nawait sendBatchToDatadog(events, {\n  apiKey: process.env.DD_API_KEY!,\n})\n","server\u002Futils\u002Fdatadog.ts",[472,1932,1933,1957,1961,1974,1995,2013,2019,2023,2036,2055],{"__ignoreMap":539},[543,1934,1935,1937,1939,1942,1944,1947,1949,1951,1953,1955],{"class":545,"line":546},[543,1936,550],{"class":549},[543,1938,554],{"class":553},[543,1940,1941],{"class":557}," sendToDatadog",[543,1943,740],{"class":553},[543,1945,1946],{"class":557}," sendBatchToDatadog",[543,1948,561],{"class":553},[543,1950,564],{"class":549},[543,1952,567],{"class":553},[543,1954,571],{"class":570},[543,1956,574],{"class":553},[543,1958,1959],{"class":545,"line":621},[543,1960,678],{"emptyLinePlaceholder":677},[543,1962,1963,1965,1967,1970,1972],{"class":545,"line":628},[543,1964,1033],{"class":549},[543,1966,1941],{"class":690},[543,1968,1969],{"class":557},"(event",[543,1971,740],{"class":553},[543,1973,710],{"class":553},[543,1975,1976,1978,1980,1983,1985,1988,1990,1992],{"class":545,"line":681},[543,1977,1460],{"class":729},[543,1979,853],{"class":553},[543,1981,1982],{"class":557}," process",[543,1984,482],{"class":553},[543,1986,1987],{"class":557},"env",[543,1989,482],{"class":553},[543,1991,612],{"class":557},[543,1993,1994],{"class":553},"!,\n",[543,1996,1997,1999,2001,2003,2005,2007,2009,2011],{"class":545,"line":713},[543,1998,1476],{"class":729},[543,2000,853],{"class":553},[543,2002,1982],{"class":557},[543,2004,482],{"class":553},[543,2006,1987],{"class":557},[543,2008,482],{"class":553},[543,2010,631],{"class":557},[543,2012,863],{"class":553},[543,2014,2015,2017],{"class":545,"line":748},[543,2016,751],{"class":553},[543,2018,754],{"class":557},[543,2020,2021],{"class":545,"line":866},[543,2022,678],{"emptyLinePlaceholder":677},[543,2024,2025,2027,2029,2032,2034],{"class":545,"line":881},[543,2026,1033],{"class":549},[543,2028,1946],{"class":690},[543,2030,2031],{"class":557},"(events",[543,2033,740],{"class":553},[543,2035,710],{"class":553},[543,2037,2039,2041,2043,2045,2047,2049,2051,2053],{"class":545,"line":2038},9,[543,2040,1460],{"class":729},[543,2042,853],{"class":553},[543,2044,1982],{"class":557},[543,2046,482],{"class":553},[543,2048,1987],{"class":557},[543,2050,482],{"class":553},[543,2052,612],{"class":557},[543,2054,1994],{"class":553},[543,2056,2058,2060],{"class":545,"line":2057},10,[543,2059,751],{"class":553},[543,2061,754],{"class":557},[526,2063,2065],{"id":2064},"next-steps","Next Steps",[1641,2067,2068,2074],{},[495,2069,2070,2073],{},[454,2071,2072],{"href":109},"OTLP Adapter"," — Send logs via OpenTelemetry (works with Datadog Agent \u002F OTLP endpoint)",[495,2075,2076,2079],{},[454,2077,2078],{"href":405},"Custom Adapters"," — Build your own destination",[2081,2082,2083],"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}",{"title":539,"searchDepth":621,"depth":621,"links":2085},[2086,2087,2092,2098,2099,2100,2101,2106,2107],{"id":528,"depth":621,"text":20},{"id":577,"depth":621,"text":25,"children":2088},[2089,2090,2091],{"id":581,"depth":628,"text":582},{"id":598,"depth":628,"text":599},{"id":639,"depth":628,"text":640},{"id":1236,"depth":621,"text":419,"children":2093},[2094,2095,2096,2097],{"id":1273,"depth":628,"text":1274},{"id":1345,"depth":628,"text":1346},{"id":1432,"depth":628,"text":1433},{"id":1509,"depth":628,"text":1510},{"id":1635,"depth":621,"text":1636},{"id":1777,"depth":621,"text":1778},{"id":1850,"depth":621,"text":1851},{"id":1877,"depth":621,"text":1878,"children":2102},[2103,2104,2105],{"id":1881,"depth":628,"text":1882},{"id":1903,"depth":628,"text":1904},{"id":1910,"depth":628,"text":1911},{"id":1925,"depth":621,"text":1926},{"id":2064,"depth":621,"text":2065},"Send wide events to Datadog Logs via the native HTTP intake API. Supports all Datadog sites and DD_* environment variables.","md",[2111,2116],{"label":464,"icon":2112,"to":462,"target":2113,"color":2114,"variant":2115},"i-lucide-external-link","_blank","neutral","subtle",{"label":2072,"icon":111,"to":109,"color":2114,"variant":2115},{},{"title":128,"icon":131},{"title":446,"description":2108},"JUHafjyeJi7Sn3DYD6lFfEeyxXM-qa1kKTrmRYUaD7w",[2122,2124],{"title":123,"path":124,"stem":125,"description":2123,"icon":126,"children":-1},"Send wide events to Better Stack (formerly Logtail) for log management, alerting, and dashboards. Zero-config setup with environment variables.",{"title":133,"path":134,"stem":135,"description":2125,"icon":136,"children":-1},"Send wide events to HyperDX via OTLP\u002FHTTP using HyperDX’s documented OpenTelemetry endpoint and authorization header. Zero-config setup with environment variables.",1782925730794]