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