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