[{"data":1,"prerenderedAt":2241},["ShallowReactive",2],{"navigation_docs":3,"-adapters-overview":402,"-adapters-overview-surround":2236},[4,35,159,201,289,299,386],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,99,127],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Catalogs","\u002Flogging\u002Fcatalogs","2.logging\u002F4.catalogs","i-lucide-book-open",{"title":66,"path":67,"stem":68,"icon":69},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F5.client-logging","i-lucide-monitor",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":34},"AI SDK","i-simple-icons-vercel","\u002Flogging\u002Fai-sdk","2.logging\u002F6.ai-sdk",[76,79,84,89,94],{"title":41,"path":77,"stem":78,"icon":44},"\u002Flogging\u002Fai-sdk\u002Foverview","2.logging\u002F6.ai-sdk\u002F01.overview",{"title":80,"path":81,"stem":82,"icon":83},"Usage","\u002Flogging\u002Fai-sdk\u002Fusage","2.logging\u002F6.ai-sdk\u002F02.usage","i-lucide-code",{"title":85,"path":86,"stem":87,"icon":88},"Options","\u002Flogging\u002Fai-sdk\u002Foptions","2.logging\u002F6.ai-sdk\u002F03.options","i-lucide-sliders",{"title":90,"path":91,"stem":92,"icon":93},"Metadata","\u002Flogging\u002Fai-sdk\u002Fmetadata","2.logging\u002F6.ai-sdk\u002F04.metadata","i-lucide-database",{"title":95,"path":96,"stem":97,"icon":98},"Telemetry","\u002Flogging\u002Fai-sdk\u002Ftelemetry","2.logging\u002F6.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Flogging\u002Fbetter-auth","2.logging\u002F7.better-auth",[105,108,113,118,122],{"title":41,"path":106,"stem":107,"icon":44},"\u002Flogging\u002Fbetter-auth\u002Foverview","2.logging\u002F7.better-auth\u002F01.overview",{"title":109,"path":110,"stem":111,"icon":112},"Identify User","\u002Flogging\u002Fbetter-auth\u002Fidentify-user","2.logging\u002F7.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":114,"path":115,"stem":116,"icon":117},"Middleware","\u002Flogging\u002Fbetter-auth\u002Fmiddleware","2.logging\u002F7.better-auth\u002F03.middleware","i-lucide-shield",{"title":119,"path":120,"stem":121,"icon":69},"Client Sync","\u002Flogging\u002Fbetter-auth\u002Fclient-sync","2.logging\u002F7.better-auth\u002F04.client-sync",{"title":123,"path":124,"stem":125,"icon":126},"Performance","\u002Flogging\u002Fbetter-auth\u002Fperformance","2.logging\u002F7.better-auth\u002F05.performance","i-lucide-gauge",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":34},"Audit Logs","i-lucide-shield-check","\u002Flogging\u002Faudit","2.logging\u002F8.audit",[133,136,141,146,151,155],{"title":41,"path":134,"stem":135,"icon":44},"\u002Flogging\u002Faudit\u002Foverview","2.logging\u002F8.audit\u002F01.overview",{"title":137,"path":138,"stem":139,"icon":140},"Schema","\u002Flogging\u002Faudit\u002Fschema","2.logging\u002F8.audit\u002F02.schema","i-lucide-file-text",{"title":142,"path":143,"stem":144,"icon":145},"Recording","\u002Flogging\u002Faudit\u002Frecording","2.logging\u002F8.audit\u002F03.recording","i-lucide-pen-line",{"title":147,"path":148,"stem":149,"icon":150},"Drains","\u002Flogging\u002Faudit\u002Fpipeline","2.logging\u002F8.audit\u002F04.pipeline","i-lucide-link",{"title":152,"path":153,"stem":154,"icon":129},"Compliance","\u002Flogging\u002Faudit\u002Fcompliance","2.logging\u002F8.audit\u002F05.compliance",{"title":156,"path":157,"stem":158,"icon":64},"Recipes","\u002Flogging\u002Faudit\u002Frecipes","2.logging\u002F8.audit\u002F06.recipes",{"title":160,"path":161,"stem":162,"children":163,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[164,169,174,179,184,188,191,196],{"title":165,"path":166,"stem":167,"icon":168},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":170,"path":171,"stem":172,"icon":173},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":175,"path":176,"stem":177,"icon":178},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":180,"path":181,"stem":182,"icon":183},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":185,"path":186,"stem":187,"icon":129},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":123,"path":189,"stem":190,"icon":126},"\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance",{"title":192,"path":193,"stem":194,"icon":195},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":197,"path":198,"stem":199,"icon":200},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":202,"path":203,"stem":204,"children":205,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[206,210,215,220,225,230,235,240,245,250,255,260,265,270,274,279,284],{"title":41,"path":207,"stem":208,"icon":209},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":211,"path":212,"stem":213,"icon":214},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":216,"path":217,"stem":218,"icon":219},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":221,"path":222,"stem":223,"icon":224},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":226,"path":227,"stem":228,"icon":229},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":231,"path":232,"stem":233,"icon":234},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":236,"path":237,"stem":238,"icon":239},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":241,"path":242,"stem":243,"icon":244},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":246,"path":247,"stem":248,"icon":249},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":251,"path":252,"stem":253,"icon":254},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":256,"path":257,"stem":258,"icon":259},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":261,"path":262,"stem":263,"icon":264},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":266,"path":267,"stem":268,"icon":269},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":271,"path":272,"stem":273,"icon":183},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":275,"path":276,"stem":277,"icon":278},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":280,"path":281,"stem":282,"icon":283},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":285,"path":286,"stem":287,"icon":288},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":290,"path":291,"stem":292,"children":293,"page":34},"Build On Top","\u002Fbuild-on-top","5.build-on-top",[294],{"title":295,"path":296,"stem":297,"icon":298},"FS reader","\u002Fbuild-on-top\u002Ffs-reader","5.build-on-top\u002F4.fs-reader","i-lucide-folder-search",{"title":300,"path":301,"stem":302,"children":303,"page":34},"Adapters","\u002Fadapters","6.adapters",[304,307,347,362],{"title":41,"path":305,"stem":306,"icon":44},"\u002Fadapters\u002Foverview","6.adapters\u002F01.overview",{"title":308,"path":309,"stem":310,"children":311,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[312,317,322,327,332,337,342],{"title":313,"path":314,"stem":315,"icon":316},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":318,"path":319,"stem":320,"icon":321},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":323,"path":324,"stem":325,"icon":326},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":328,"path":329,"stem":330,"icon":331},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":333,"path":334,"stem":335,"icon":336},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":338,"path":339,"stem":340,"icon":341},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":343,"path":344,"stem":345,"icon":346},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":348,"path":349,"stem":350,"children":351,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[352,357],{"title":353,"path":354,"stem":355,"icon":356},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":358,"path":359,"stem":360,"icon":361},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":363,"path":364,"stem":365,"children":366,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[367,372,377,381],{"title":368,"path":369,"stem":370,"icon":371},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":373,"path":374,"stem":375,"icon":376},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":378,"path":379,"stem":380,"icon":83},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom",{"title":382,"path":383,"stem":384,"icon":385},"Toolkit","\u002Fadapters\u002Fbuilding-blocks\u002Ftoolkit","6.adapters\u002F04.building-blocks\u002F04.toolkit","i-lucide-blocks",{"title":387,"path":388,"stem":389,"children":390,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[391,394,398],{"title":41,"path":392,"stem":393,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":395,"path":396,"stem":397,"icon":288},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":399,"path":400,"stem":401,"icon":83},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":403,"title":404,"body":405,"description":2219,"extension":2220,"links":2221,"meta":2232,"navigation":2233,"path":305,"seo":2234,"stem":306,"__hash__":2235},"docs\u002F6.adapters\u002F01.overview.md","Adapters Overview",{"type":406,"value":407,"toc":2211},"minimark",[408,412,415,420,433,436,1034,1047,1051,1091,1095,1105,1450,1463,1467,1470,1613,1619,1919,1923,1929,2006,2023,2027,2030,2037,2200,2207],[409,410,411],"p",{},"Adapters let you send logs to external observability platforms. evlog provides built-in adapters for popular services, and you can create custom adapters for any destination.",[413,414],"drain-fan-out",{},[416,417,419],"h2",{"id":418},"how-adapters-work","How Adapters Work",[409,421,422,423,427,428,432],{},"Adapters receive a ",[424,425,426],"code",{},"DrainContext"," after each request completes and send the data to an external service. The drain runs in ",[429,430,431],"strong",{},"fire-and-forget"," mode, meaning it never blocks the HTTP response.",[409,434,435],{},"How you wire an adapter depends on your framework:",[437,438,439,573,704,766,820,879,933,986],"code-group",{},[440,441,447],"pre",{"className":442,"code":443,"filename":444,"language":445,"meta":446,"style":446},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createAxiomDrain())\n})\n","Nuxt \u002F Nitro","typescript","",[424,448,449,458,489,496,528,564],{"__ignoreMap":446},[450,451,454],"span",{"class":452,"line":453},"line",1,[450,455,457],{"class":456},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[450,459,461,465,469,473,476,479,482,486],{"class":452,"line":460},2,[450,462,464],{"class":463},"s7zQu","import",[450,466,468],{"class":467},"sMK4o"," {",[450,470,472],{"class":471},"sTEyZ"," createAxiomDrain",[450,474,475],{"class":467}," }",[450,477,478],{"class":463}," from",[450,480,481],{"class":467}," '",[450,483,485],{"class":484},"sfazB","evlog\u002Faxiom",[450,487,488],{"class":467},"'\n",[450,490,492],{"class":452,"line":491},3,[450,493,495],{"emptyLinePlaceholder":494},true,"\n",[450,497,499,502,505,509,512,514,518,521,525],{"class":452,"line":498},4,[450,500,501],{"class":463},"export",[450,503,504],{"class":463}," default",[450,506,508],{"class":507},"s2Zo4"," defineNitroPlugin",[450,510,511],{"class":471},"(",[450,513,511],{"class":467},[450,515,517],{"class":516},"sHdIc","nitroApp",[450,519,520],{"class":467},")",[450,522,524],{"class":523},"spNyl"," =>",[450,526,527],{"class":467}," {\n",[450,529,531,534,537,540,542,545,548,551,554,556,559,561],{"class":452,"line":530},5,[450,532,533],{"class":471},"  nitroApp",[450,535,536],{"class":467},".",[450,538,539],{"class":471},"hooks",[450,541,536],{"class":467},[450,543,544],{"class":507},"hook",[450,546,511],{"class":547},"swJcz",[450,549,550],{"class":467},"'",[450,552,553],{"class":484},"evlog:drain",[450,555,550],{"class":467},[450,557,558],{"class":467},",",[450,560,472],{"class":507},[450,562,563],{"class":547},"())\n",[450,565,567,570],{"class":452,"line":566},6,[450,568,569],{"class":467},"}",[450,571,572],{"class":471},")\n",[440,574,576],{"className":442,"code":575,"filename":216,"language":445,"meta":446,"style":446},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: createAxiomDrain(),\n})\n",[424,577,578,583,603,621,625,664,682,697],{"__ignoreMap":446},[450,579,580],{"class":452,"line":453},[450,581,582],{"class":456},"\u002F\u002F lib\u002Fevlog.ts\n",[450,584,585,587,589,592,594,596,598,601],{"class":452,"line":460},[450,586,464],{"class":463},[450,588,468],{"class":467},[450,590,591],{"class":471}," createEvlog",[450,593,475],{"class":467},[450,595,478],{"class":463},[450,597,481],{"class":467},[450,599,600],{"class":484},"evlog\u002Fnext",[450,602,488],{"class":467},[450,604,605,607,609,611,613,615,617,619],{"class":452,"line":491},[450,606,464],{"class":463},[450,608,468],{"class":467},[450,610,472],{"class":471},[450,612,475],{"class":467},[450,614,478],{"class":463},[450,616,481],{"class":467},[450,618,485],{"class":484},[450,620,488],{"class":467},[450,622,623],{"class":452,"line":498},[450,624,495],{"emptyLinePlaceholder":494},[450,626,627,629,632,634,637,639,642,644,647,649,652,654,657,659,661],{"class":452,"line":530},[450,628,501],{"class":463},[450,630,631],{"class":523}," const",[450,633,468],{"class":467},[450,635,636],{"class":471}," withEvlog",[450,638,558],{"class":467},[450,640,641],{"class":471}," useLogger",[450,643,558],{"class":467},[450,645,646],{"class":471}," log",[450,648,558],{"class":467},[450,650,651],{"class":471}," createError ",[450,653,569],{"class":467},[450,655,656],{"class":467}," =",[450,658,591],{"class":507},[450,660,511],{"class":471},[450,662,663],{"class":467},"{\n",[450,665,666,669,672,674,677,679],{"class":452,"line":566},[450,667,668],{"class":547},"  service",[450,670,671],{"class":467},":",[450,673,481],{"class":467},[450,675,676],{"class":484},"my-app",[450,678,550],{"class":467},[450,680,681],{"class":467},",\n",[450,683,685,688,690,692,695],{"class":452,"line":684},7,[450,686,687],{"class":547},"  drain",[450,689,671],{"class":467},[450,691,472],{"class":507},[450,693,694],{"class":471},"()",[450,696,681],{"class":467},[450,698,700,702],{"class":452,"line":699},8,[450,701,569],{"class":467},[450,703,572],{"class":471},[440,705,707],{"className":442,"code":706,"filename":246,"language":445,"meta":446,"style":446},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\napp.use(evlog({ drain: createAxiomDrain() }))\n",[424,708,709,727,731],{"__ignoreMap":446},[450,710,711,713,715,717,719,721,723,725],{"class":452,"line":453},[450,712,464],{"class":463},[450,714,468],{"class":467},[450,716,472],{"class":471},[450,718,475],{"class":467},[450,720,478],{"class":463},[450,722,481],{"class":467},[450,724,485],{"class":484},[450,726,488],{"class":467},[450,728,729],{"class":452,"line":460},[450,730,495],{"emptyLinePlaceholder":494},[450,732,733,736,738,741,743,746,748,751,754,756,758,761,763],{"class":452,"line":491},[450,734,735],{"class":471},"app",[450,737,536],{"class":467},[450,739,740],{"class":507},"use",[450,742,511],{"class":471},[450,744,745],{"class":507},"evlog",[450,747,511],{"class":471},[450,749,750],{"class":467},"{",[450,752,753],{"class":547}," drain",[450,755,671],{"class":467},[450,757,472],{"class":507},[450,759,760],{"class":471},"() ",[450,762,569],{"class":467},[450,764,765],{"class":471},"))\n",[440,767,768],{"className":442,"code":706,"filename":241,"language":445,"meta":446,"style":446},[424,769,770,788,792],{"__ignoreMap":446},[450,771,772,774,776,778,780,782,784,786],{"class":452,"line":453},[450,773,464],{"class":463},[450,775,468],{"class":467},[450,777,472],{"class":471},[450,779,475],{"class":467},[450,781,478],{"class":463},[450,783,481],{"class":467},[450,785,485],{"class":484},[450,787,488],{"class":467},[450,789,790],{"class":452,"line":460},[450,791,495],{"emptyLinePlaceholder":494},[450,793,794,796,798,800,802,804,806,808,810,812,814,816,818],{"class":452,"line":491},[450,795,735],{"class":471},[450,797,536],{"class":467},[450,799,740],{"class":507},[450,801,511],{"class":471},[450,803,745],{"class":507},[450,805,511],{"class":471},[450,807,750],{"class":467},[450,809,753],{"class":547},[450,811,671],{"class":467},[450,813,472],{"class":507},[450,815,760],{"class":471},[450,817,569],{"class":467},[450,819,765],{"class":471},[440,821,823],{"className":442,"code":822,"filename":251,"language":445,"meta":446,"style":446},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nawait app.register(evlog, { drain: createAxiomDrain() })\n",[424,824,825,843,847],{"__ignoreMap":446},[450,826,827,829,831,833,835,837,839,841],{"class":452,"line":453},[450,828,464],{"class":463},[450,830,468],{"class":467},[450,832,472],{"class":471},[450,834,475],{"class":467},[450,836,478],{"class":463},[450,838,481],{"class":467},[450,840,485],{"class":484},[450,842,488],{"class":467},[450,844,845],{"class":452,"line":460},[450,846,495],{"emptyLinePlaceholder":494},[450,848,849,852,855,857,860,863,865,867,869,871,873,875,877],{"class":452,"line":491},[450,850,851],{"class":463},"await",[450,853,854],{"class":471}," app",[450,856,536],{"class":467},[450,858,859],{"class":507},"register",[450,861,862],{"class":471},"(evlog",[450,864,558],{"class":467},[450,866,468],{"class":467},[450,868,753],{"class":547},[450,870,671],{"class":467},[450,872,472],{"class":507},[450,874,760],{"class":471},[450,876,569],{"class":467},[450,878,572],{"class":471},[440,880,881],{"className":442,"code":706,"filename":256,"language":445,"meta":446,"style":446},[424,882,883,901,905],{"__ignoreMap":446},[450,884,885,887,889,891,893,895,897,899],{"class":452,"line":453},[450,886,464],{"class":463},[450,888,468],{"class":467},[450,890,472],{"class":471},[450,892,475],{"class":467},[450,894,478],{"class":463},[450,896,481],{"class":467},[450,898,485],{"class":484},[450,900,488],{"class":467},[450,902,903],{"class":452,"line":460},[450,904,495],{"emptyLinePlaceholder":494},[450,906,907,909,911,913,915,917,919,921,923,925,927,929,931],{"class":452,"line":491},[450,908,735],{"class":471},[450,910,536],{"class":467},[450,912,740],{"class":507},[450,914,511],{"class":471},[450,916,745],{"class":507},[450,918,511],{"class":471},[450,920,750],{"class":467},[450,922,753],{"class":547},[450,924,671],{"class":467},[450,926,472],{"class":507},[450,928,760],{"class":471},[450,930,569],{"class":467},[450,932,765],{"class":471},[440,934,936],{"className":442,"code":935,"filename":236,"language":445,"meta":446,"style":446},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nEvlogModule.forRoot({ drain: createAxiomDrain() })\n",[424,937,938,956,960],{"__ignoreMap":446},[450,939,940,942,944,946,948,950,952,954],{"class":452,"line":453},[450,941,464],{"class":463},[450,943,468],{"class":467},[450,945,472],{"class":471},[450,947,475],{"class":467},[450,949,478],{"class":463},[450,951,481],{"class":467},[450,953,485],{"class":484},[450,955,488],{"class":467},[450,957,958],{"class":452,"line":460},[450,959,495],{"emptyLinePlaceholder":494},[450,961,962,965,967,970,972,974,976,978,980,982,984],{"class":452,"line":491},[450,963,964],{"class":471},"EvlogModule",[450,966,536],{"class":467},[450,968,969],{"class":507},"forRoot",[450,971,511],{"class":471},[450,973,750],{"class":467},[450,975,753],{"class":547},[450,977,671],{"class":467},[450,979,472],{"class":507},[450,981,760],{"class":471},[450,983,569],{"class":467},[450,985,572],{"class":471},[440,987,989],{"className":442,"code":988,"filename":271,"language":445,"meta":446,"style":446},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({ drain: createAxiomDrain() })\n",[424,990,991,1009,1013],{"__ignoreMap":446},[450,992,993,995,997,999,1001,1003,1005,1007],{"class":452,"line":453},[450,994,464],{"class":463},[450,996,468],{"class":467},[450,998,472],{"class":471},[450,1000,475],{"class":467},[450,1002,478],{"class":463},[450,1004,481],{"class":467},[450,1006,485],{"class":484},[450,1008,488],{"class":467},[450,1010,1011],{"class":452,"line":460},[450,1012,495],{"emptyLinePlaceholder":494},[450,1014,1015,1018,1020,1022,1024,1026,1028,1030,1032],{"class":452,"line":491},[450,1016,1017],{"class":507},"initLogger",[450,1019,511],{"class":471},[450,1021,750],{"class":467},[450,1023,753],{"class":547},[450,1025,671],{"class":467},[450,1027,472],{"class":507},[450,1029,760],{"class":471},[450,1031,569],{"class":467},[450,1033,572],{"class":471},[1035,1036,1039,1042,1043,1046],"callout",{"color":1037,"icon":1038},"info","i-lucide-cloud",[429,1040,1041],{},"Serverless Support:"," On Cloudflare Workers and Vercel Edge, evlog automatically uses ",[424,1044,1045],{},"waitUntil()"," to ensure drains complete before the runtime terminates. No additional configuration needed.",[416,1048,1050],{"id":1049},"available-adapters","Available Adapters",[1052,1053,1054,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088],"card-group",{},[1055,1056,1057],"card",{"icon":316,"title":313,"to":314},"Send logs to Axiom for powerful querying and dashboards.",[1055,1059,1060],{"icon":321,"title":318,"to":319},"OpenTelemetry Protocol for Grafana, Datadog, Honeycomb, and more.",[1055,1062,1063],{"icon":346,"title":343,"to":344},"Send logs to HyperDX via OTLP\u002FHTTP using their documented ingest endpoint and API key.",[1055,1065,1066],{"icon":326,"title":323,"to":324},"Send logs to PostHog Logs for structured logging and observability.",[1055,1068,1069],{"icon":331,"title":328,"to":329},"Send structured logs to Sentry Logs for high-cardinality querying.",[1055,1071,1072],{"icon":336,"title":333,"to":334},"Send logs to Better Stack for log management and alerting.",[1055,1074,1075],{"icon":341,"title":338,"to":339},"Send logs to Datadog Logs via the native HTTP intake API.",[1055,1077,1078],{"icon":356,"title":353,"to":354},"Write logs to local NDJSON files for debugging and AI agent integration.",[1055,1080,1081],{"icon":361,"title":358,"to":359},"Self-hosted log storage in your NuxtHub database with automatic retention.",[1055,1083,1084],{"icon":83,"title":399,"to":379},"Build your own adapter for any destination.",[1055,1086,1087],{"icon":376,"title":373,"to":374},"Send client logs to your server over HTTP without framework coupling.",[1055,1089,1090],{"icon":371,"title":368,"to":369},"Batch events, retry on failure, and handle buffer overflow.",[416,1092,1094],{"id":1093},"standalone-usage","Standalone Usage",[409,1096,1097,1098,1101,1102,1104],{},"In plain TypeScript or Bun scripts (no HTTP framework), use the ",[424,1099,1100],{},"drain"," option in ",[424,1103,1017],{},". Every emitted event is drained automatically.",[440,1106,1109],{"className":442,"code":1107,"filename":1108,"language":445,"meta":446,"style":446},"import type { DrainContext } from 'evlog'\nimport { initLogger, log, createRequestLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>()\nconst drain = pipeline(createAxiomDrain())\n\ninitLogger({\n  env: { service: 'my-script' },\n  drain,\n})\n\nlog.info({ action: 'job_started' }) \u002F\u002F drained automatically\n\nconst reqLog = createRequestLogger({ method: 'POST', path: '\u002Fprocess' })\nreqLog.set({ processed: 42 })\nreqLog.emit() \u002F\u002F drained automatically\n\nawait drain.flush()\n","index.ts",[424,1110,1111,1133,1161,1179,1199,1203,1228,1247,1251,1260,1285,1292,1299,1304,1338,1343,1389,1417,1431,1436],{"__ignoreMap":446},[450,1112,1113,1115,1118,1120,1123,1125,1127,1129,1131],{"class":452,"line":453},[450,1114,464],{"class":463},[450,1116,1117],{"class":463}," type",[450,1119,468],{"class":467},[450,1121,1122],{"class":471}," DrainContext",[450,1124,475],{"class":467},[450,1126,478],{"class":463},[450,1128,481],{"class":467},[450,1130,745],{"class":484},[450,1132,488],{"class":467},[450,1134,1135,1137,1139,1142,1144,1146,1148,1151,1153,1155,1157,1159],{"class":452,"line":460},[450,1136,464],{"class":463},[450,1138,468],{"class":467},[450,1140,1141],{"class":471}," initLogger",[450,1143,558],{"class":467},[450,1145,646],{"class":471},[450,1147,558],{"class":467},[450,1149,1150],{"class":471}," createRequestLogger",[450,1152,475],{"class":467},[450,1154,478],{"class":463},[450,1156,481],{"class":467},[450,1158,745],{"class":484},[450,1160,488],{"class":467},[450,1162,1163,1165,1167,1169,1171,1173,1175,1177],{"class":452,"line":491},[450,1164,464],{"class":463},[450,1166,468],{"class":467},[450,1168,472],{"class":471},[450,1170,475],{"class":467},[450,1172,478],{"class":463},[450,1174,481],{"class":467},[450,1176,485],{"class":484},[450,1178,488],{"class":467},[450,1180,1181,1183,1185,1188,1190,1192,1194,1197],{"class":452,"line":498},[450,1182,464],{"class":463},[450,1184,468],{"class":467},[450,1186,1187],{"class":471}," createDrainPipeline",[450,1189,475],{"class":467},[450,1191,478],{"class":463},[450,1193,481],{"class":467},[450,1195,1196],{"class":484},"evlog\u002Fpipeline",[450,1198,488],{"class":467},[450,1200,1201],{"class":452,"line":530},[450,1202,495],{"emptyLinePlaceholder":494},[450,1204,1205,1208,1211,1214,1216,1219,1222,1225],{"class":452,"line":566},[450,1206,1207],{"class":523},"const",[450,1209,1210],{"class":471}," pipeline ",[450,1212,1213],{"class":467},"=",[450,1215,1187],{"class":507},[450,1217,1218],{"class":467},"\u003C",[450,1220,426],{"class":1221},"sBMFI",[450,1223,1224],{"class":467},">",[450,1226,1227],{"class":471},"()\n",[450,1229,1230,1232,1235,1237,1240,1242,1245],{"class":452,"line":684},[450,1231,1207],{"class":523},[450,1233,1234],{"class":471}," drain ",[450,1236,1213],{"class":467},[450,1238,1239],{"class":507}," pipeline",[450,1241,511],{"class":471},[450,1243,1244],{"class":507},"createAxiomDrain",[450,1246,563],{"class":471},[450,1248,1249],{"class":452,"line":699},[450,1250,495],{"emptyLinePlaceholder":494},[450,1252,1254,1256,1258],{"class":452,"line":1253},9,[450,1255,1017],{"class":507},[450,1257,511],{"class":471},[450,1259,663],{"class":467},[450,1261,1263,1266,1268,1270,1273,1275,1277,1280,1282],{"class":452,"line":1262},10,[450,1264,1265],{"class":547},"  env",[450,1267,671],{"class":467},[450,1269,468],{"class":467},[450,1271,1272],{"class":547}," service",[450,1274,671],{"class":467},[450,1276,481],{"class":467},[450,1278,1279],{"class":484},"my-script",[450,1281,550],{"class":467},[450,1283,1284],{"class":467}," },\n",[450,1286,1288,1290],{"class":452,"line":1287},11,[450,1289,687],{"class":471},[450,1291,681],{"class":467},[450,1293,1295,1297],{"class":452,"line":1294},12,[450,1296,569],{"class":467},[450,1298,572],{"class":471},[450,1300,1302],{"class":452,"line":1301},13,[450,1303,495],{"emptyLinePlaceholder":494},[450,1305,1307,1310,1312,1314,1316,1318,1321,1323,1325,1328,1330,1332,1335],{"class":452,"line":1306},14,[450,1308,1309],{"class":471},"log",[450,1311,536],{"class":467},[450,1313,1037],{"class":507},[450,1315,511],{"class":471},[450,1317,750],{"class":467},[450,1319,1320],{"class":547}," action",[450,1322,671],{"class":467},[450,1324,481],{"class":467},[450,1326,1327],{"class":484},"job_started",[450,1329,550],{"class":467},[450,1331,475],{"class":467},[450,1333,1334],{"class":471},") ",[450,1336,1337],{"class":456},"\u002F\u002F drained automatically\n",[450,1339,1341],{"class":452,"line":1340},15,[450,1342,495],{"emptyLinePlaceholder":494},[450,1344,1346,1348,1351,1353,1355,1357,1359,1362,1364,1366,1369,1371,1373,1376,1378,1380,1383,1385,1387],{"class":452,"line":1345},16,[450,1347,1207],{"class":523},[450,1349,1350],{"class":471}," reqLog ",[450,1352,1213],{"class":467},[450,1354,1150],{"class":507},[450,1356,511],{"class":471},[450,1358,750],{"class":467},[450,1360,1361],{"class":547}," method",[450,1363,671],{"class":467},[450,1365,481],{"class":467},[450,1367,1368],{"class":484},"POST",[450,1370,550],{"class":467},[450,1372,558],{"class":467},[450,1374,1375],{"class":547}," path",[450,1377,671],{"class":467},[450,1379,481],{"class":467},[450,1381,1382],{"class":484},"\u002Fprocess",[450,1384,550],{"class":467},[450,1386,475],{"class":467},[450,1388,572],{"class":471},[450,1390,1392,1395,1397,1400,1402,1404,1407,1409,1413,1415],{"class":452,"line":1391},17,[450,1393,1394],{"class":471},"reqLog",[450,1396,536],{"class":467},[450,1398,1399],{"class":507},"set",[450,1401,511],{"class":471},[450,1403,750],{"class":467},[450,1405,1406],{"class":547}," processed",[450,1408,671],{"class":467},[450,1410,1412],{"class":1411},"sbssI"," 42",[450,1414,475],{"class":467},[450,1416,572],{"class":471},[450,1418,1420,1422,1424,1427,1429],{"class":452,"line":1419},18,[450,1421,1394],{"class":471},[450,1423,536],{"class":467},[450,1425,1426],{"class":507},"emit",[450,1428,760],{"class":471},[450,1430,1337],{"class":456},[450,1432,1434],{"class":452,"line":1433},19,[450,1435,495],{"emptyLinePlaceholder":494},[450,1437,1439,1441,1443,1445,1448],{"class":452,"line":1438},20,[450,1440,851],{"class":463},[450,1442,753],{"class":471},[450,1444,536],{"class":467},[450,1446,1447],{"class":507},"flush",[450,1449,1227],{"class":471},[1035,1451,1454,1455,1462],{"color":1452,"icon":1453},"neutral","i-lucide-arrow-right","See the full ",[1456,1457,1461],"a",{"href":1458,"rel":1459},"https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fbun-script",[1460],"nofollow","bun-script example"," for a realistic batch processing script.",[416,1464,1466],{"id":1465},"multiple-destinations","Multiple Destinations",[409,1468,1469],{},"Send logs to multiple services simultaneously by composing drains:",[440,1471,1474],{"className":442,"code":1472,"filename":1473,"language":445,"meta":446,"style":446},"import { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createOTLPDrain } from 'evlog\u002Fotlp'\n\nconst axiom = createAxiomDrain()\nconst otlp = createOTLPDrain()\n\nconst drain = async (ctx) => {\n  await Promise.allSettled([axiom(ctx), otlp(ctx)])\n}\n","src\u002Findex.ts",[424,1475,1476,1494,1514,1518,1531,1544,1548,1571,1608],{"__ignoreMap":446},[450,1477,1478,1480,1482,1484,1486,1488,1490,1492],{"class":452,"line":453},[450,1479,464],{"class":463},[450,1481,468],{"class":467},[450,1483,472],{"class":471},[450,1485,475],{"class":467},[450,1487,478],{"class":463},[450,1489,481],{"class":467},[450,1491,485],{"class":484},[450,1493,488],{"class":467},[450,1495,1496,1498,1500,1503,1505,1507,1509,1512],{"class":452,"line":460},[450,1497,464],{"class":463},[450,1499,468],{"class":467},[450,1501,1502],{"class":471}," createOTLPDrain",[450,1504,475],{"class":467},[450,1506,478],{"class":463},[450,1508,481],{"class":467},[450,1510,1511],{"class":484},"evlog\u002Fotlp",[450,1513,488],{"class":467},[450,1515,1516],{"class":452,"line":491},[450,1517,495],{"emptyLinePlaceholder":494},[450,1519,1520,1522,1525,1527,1529],{"class":452,"line":498},[450,1521,1207],{"class":523},[450,1523,1524],{"class":471}," axiom ",[450,1526,1213],{"class":467},[450,1528,472],{"class":507},[450,1530,1227],{"class":471},[450,1532,1533,1535,1538,1540,1542],{"class":452,"line":530},[450,1534,1207],{"class":523},[450,1536,1537],{"class":471}," otlp ",[450,1539,1213],{"class":467},[450,1541,1502],{"class":507},[450,1543,1227],{"class":471},[450,1545,1546],{"class":452,"line":566},[450,1547,495],{"emptyLinePlaceholder":494},[450,1549,1550,1552,1554,1556,1559,1562,1565,1567,1569],{"class":452,"line":684},[450,1551,1207],{"class":523},[450,1553,1234],{"class":471},[450,1555,1213],{"class":467},[450,1557,1558],{"class":523}," async",[450,1560,1561],{"class":467}," (",[450,1563,1564],{"class":516},"ctx",[450,1566,520],{"class":467},[450,1568,524],{"class":523},[450,1570,527],{"class":467},[450,1572,1573,1576,1579,1581,1584,1587,1590,1592,1594,1596,1598,1601,1603,1605],{"class":452,"line":699},[450,1574,1575],{"class":463},"  await",[450,1577,1578],{"class":1221}," Promise",[450,1580,536],{"class":467},[450,1582,1583],{"class":507},"allSettled",[450,1585,1586],{"class":547},"([",[450,1588,1589],{"class":507},"axiom",[450,1591,511],{"class":547},[450,1593,1564],{"class":471},[450,1595,520],{"class":547},[450,1597,558],{"class":467},[450,1599,1600],{"class":507}," otlp",[450,1602,511],{"class":547},[450,1604,1564],{"class":471},[450,1606,1607],{"class":547},")])\n",[450,1609,1610],{"class":452,"line":1253},[450,1611,1612],{"class":467},"}\n",[409,1614,1615,1616,1618],{},"Then pass ",[424,1617,1100],{}," to your framework:",[437,1620,1621,1682,1771,1798,1824,1851,1877,1900],{},[440,1622,1624],{"className":442,"code":1623,"filename":444,"language":445,"meta":446,"style":446},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', drain)\n})\n",[424,1625,1626,1630,1650,1676],{"__ignoreMap":446},[450,1627,1628],{"class":452,"line":453},[450,1629,457],{"class":456},[450,1631,1632,1634,1636,1638,1640,1642,1644,1646,1648],{"class":452,"line":460},[450,1633,501],{"class":463},[450,1635,504],{"class":463},[450,1637,508],{"class":507},[450,1639,511],{"class":471},[450,1641,511],{"class":467},[450,1643,517],{"class":516},[450,1645,520],{"class":467},[450,1647,524],{"class":523},[450,1649,527],{"class":467},[450,1651,1652,1654,1656,1658,1660,1662,1664,1666,1668,1670,1672,1674],{"class":452,"line":491},[450,1653,533],{"class":471},[450,1655,536],{"class":467},[450,1657,539],{"class":471},[450,1659,536],{"class":467},[450,1661,544],{"class":507},[450,1663,511],{"class":547},[450,1665,550],{"class":467},[450,1667,553],{"class":484},[450,1669,550],{"class":467},[450,1671,558],{"class":467},[450,1673,753],{"class":471},[450,1675,572],{"class":547},[450,1677,1678,1680],{"class":452,"line":498},[450,1679,569],{"class":467},[450,1681,572],{"class":471},[440,1683,1685],{"className":442,"code":1684,"filename":216,"language":445,"meta":446,"style":446},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain,\n})\n",[424,1686,1687,1691,1709,1713,1745,1759,1765],{"__ignoreMap":446},[450,1688,1689],{"class":452,"line":453},[450,1690,582],{"class":456},[450,1692,1693,1695,1697,1699,1701,1703,1705,1707],{"class":452,"line":460},[450,1694,464],{"class":463},[450,1696,468],{"class":467},[450,1698,591],{"class":471},[450,1700,475],{"class":467},[450,1702,478],{"class":463},[450,1704,481],{"class":467},[450,1706,600],{"class":484},[450,1708,488],{"class":467},[450,1710,1711],{"class":452,"line":491},[450,1712,495],{"emptyLinePlaceholder":494},[450,1714,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743],{"class":452,"line":498},[450,1716,501],{"class":463},[450,1718,631],{"class":523},[450,1720,468],{"class":467},[450,1722,636],{"class":471},[450,1724,558],{"class":467},[450,1726,641],{"class":471},[450,1728,558],{"class":467},[450,1730,646],{"class":471},[450,1732,558],{"class":467},[450,1734,651],{"class":471},[450,1736,569],{"class":467},[450,1738,656],{"class":467},[450,1740,591],{"class":507},[450,1742,511],{"class":471},[450,1744,663],{"class":467},[450,1746,1747,1749,1751,1753,1755,1757],{"class":452,"line":530},[450,1748,668],{"class":547},[450,1750,671],{"class":467},[450,1752,481],{"class":467},[450,1754,676],{"class":484},[450,1756,550],{"class":467},[450,1758,681],{"class":467},[450,1760,1761,1763],{"class":452,"line":566},[450,1762,687],{"class":471},[450,1764,681],{"class":467},[450,1766,1767,1769],{"class":452,"line":684},[450,1768,569],{"class":467},[450,1770,572],{"class":471},[440,1772,1774],{"className":442,"code":1773,"filename":246,"language":445,"meta":446,"style":446},"app.use(evlog({ drain }))\n",[424,1775,1776],{"__ignoreMap":446},[450,1777,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796],{"class":452,"line":453},[450,1779,735],{"class":471},[450,1781,536],{"class":467},[450,1783,740],{"class":507},[450,1785,511],{"class":471},[450,1787,745],{"class":507},[450,1789,511],{"class":471},[450,1791,750],{"class":467},[450,1793,1234],{"class":471},[450,1795,569],{"class":467},[450,1797,765],{"class":471},[440,1799,1800],{"className":442,"code":1773,"filename":241,"language":445,"meta":446,"style":446},[424,1801,1802],{"__ignoreMap":446},[450,1803,1804,1806,1808,1810,1812,1814,1816,1818,1820,1822],{"class":452,"line":453},[450,1805,735],{"class":471},[450,1807,536],{"class":467},[450,1809,740],{"class":507},[450,1811,511],{"class":471},[450,1813,745],{"class":507},[450,1815,511],{"class":471},[450,1817,750],{"class":467},[450,1819,1234],{"class":471},[450,1821,569],{"class":467},[450,1823,765],{"class":471},[440,1825,1827],{"className":442,"code":1826,"filename":251,"language":445,"meta":446,"style":446},"await app.register(evlog, { drain })\n",[424,1828,1829],{"__ignoreMap":446},[450,1830,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849],{"class":452,"line":453},[450,1832,851],{"class":463},[450,1834,854],{"class":471},[450,1836,536],{"class":467},[450,1838,859],{"class":507},[450,1840,862],{"class":471},[450,1842,558],{"class":467},[450,1844,468],{"class":467},[450,1846,1234],{"class":471},[450,1848,569],{"class":467},[450,1850,572],{"class":471},[440,1852,1853],{"className":442,"code":1773,"filename":256,"language":445,"meta":446,"style":446},[424,1854,1855],{"__ignoreMap":446},[450,1856,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875],{"class":452,"line":453},[450,1858,735],{"class":471},[450,1860,536],{"class":467},[450,1862,740],{"class":507},[450,1864,511],{"class":471},[450,1866,745],{"class":507},[450,1868,511],{"class":471},[450,1870,750],{"class":467},[450,1872,1234],{"class":471},[450,1874,569],{"class":467},[450,1876,765],{"class":471},[440,1878,1880],{"className":442,"code":1879,"filename":236,"language":445,"meta":446,"style":446},"EvlogModule.forRoot({ drain })\n",[424,1881,1882],{"__ignoreMap":446},[450,1883,1884,1886,1888,1890,1892,1894,1896,1898],{"class":452,"line":453},[450,1885,964],{"class":471},[450,1887,536],{"class":467},[450,1889,969],{"class":507},[450,1891,511],{"class":471},[450,1893,750],{"class":467},[450,1895,1234],{"class":471},[450,1897,569],{"class":467},[450,1899,572],{"class":471},[440,1901,1903],{"className":442,"code":1902,"filename":271,"language":445,"meta":446,"style":446},"initLogger({ drain })\n",[424,1904,1905],{"__ignoreMap":446},[450,1906,1907,1909,1911,1913,1915,1917],{"class":452,"line":453},[450,1908,1017],{"class":507},[450,1910,511],{"class":471},[450,1912,750],{"class":467},[450,1914,1234],{"class":471},[450,1916,569],{"class":467},[450,1918,572],{"class":471},[416,1920,1922],{"id":1921},"drain-context","Drain Context",[409,1924,1925,1926,1928],{},"Every adapter receives a ",[424,1927,426],{}," with:",[1930,1931,1932,1948],"table",{},[1933,1934,1935],"thead",{},[1936,1937,1938,1942,1945],"tr",{},[1939,1940,1941],"th",{},"Field",[1939,1943,1944],{},"Type",[1939,1946,1947],{},"Description",[1949,1950,1951,1967,1992],"tbody",{},[1936,1952,1953,1959,1964],{},[1954,1955,1956],"td",{},[424,1957,1958],{},"event",[1954,1960,1961],{},[424,1962,1963],{},"WideEvent",[1954,1965,1966],{},"The complete log event with all accumulated context",[1936,1968,1969,1974,1979],{},[1954,1970,1971],{},[424,1972,1973],{},"request",[1954,1975,1976],{},[424,1977,1978],{},"object",[1954,1980,1981,1982,1985,1986,1985,1989,520],{},"Request metadata (",[424,1983,1984],{},"method",", ",[424,1987,1988],{},"path",[424,1990,1991],{},"requestId",[1936,1993,1994,1999,2003],{},[1954,1995,1996],{},[424,1997,1998],{},"headers",[1954,2000,2001],{},[424,2002,1978],{},[1954,2004,2005],{},"Safe HTTP headers (sensitive headers are filtered)",[1035,2007,2009,2012,2013,1985,2016,1985,2019,2022],{"color":2008,"icon":129},"success",[429,2010,2011],{},"Security:"," Sensitive headers (",[424,2014,2015],{},"authorization",[424,2017,2018],{},"cookie",[424,2020,2021],{},"x-api-key",", etc.) are automatically filtered and never passed to adapters.",[416,2024,2026],{"id":2025},"zero-config-setup","Zero-Config Setup",[409,2028,2029],{},"All adapters support automatic configuration via environment variables. No code changes needed when deploying to different environments.",[409,2031,2032,2033,2036],{},"Each adapter reads from ",[424,2034,2035],{},"NUXT_*"," prefixed variables (for Nuxt\u002FNitro runtimeConfig) and unprefixed fallbacks (for any framework):",[440,2038,2043],{"className":2039,"code":2040,"filename":2041,"language":2042,"meta":446,"style":446},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Axiom (NUXT_AXIOM_* or AXIOM_*)\nAXIOM_TOKEN=xaat-xxx\nAXIOM_DATASET=my-logs\n\n# OTLP (NUXT_OTLP_* or OTEL_*)\nOTLP_ENDPOINT=https:\u002F\u002Fotlp.example.com\n\n# HyperDX (NUXT_HYPERDX_* or HYPERDX_*)\nHYPERDX_API_KEY=\u003CYOUR_HYPERDX_API_KEY_HERE>\n\n# PostHog (NUXT_POSTHOG_* or POSTHOG_*)\nPOSTHOG_API_KEY=phc_xxx\n\n# Sentry (NUXT_SENTRY_* or SENTRY_*)\nSENTRY_DSN=https:\u002F\u002Fkey@o0.ingest.sentry.io\u002F123\n\n# Better Stack (NUXT_BETTER_STACK_* or BETTER_STACK_*)\nBETTER_STACK_SOURCE_TOKEN=your-source-token\n\n# Datadog (NUXT_DATADOG_* or DATADOG_* or DD_*)\nDD_API_KEY=your-api-key\nDD_SITE=datadoghq.eu\n",".env","bash",[424,2044,2045,2050,2060,2070,2074,2079,2089,2093,2098,2112,2116,2121,2131,2135,2140,2150,2154,2159,2169,2173,2178,2189],{"__ignoreMap":446},[450,2046,2047],{"class":452,"line":453},[450,2048,2049],{"class":456},"# Axiom (NUXT_AXIOM_* or AXIOM_*)\n",[450,2051,2052,2055,2057],{"class":452,"line":460},[450,2053,2054],{"class":471},"AXIOM_TOKEN",[450,2056,1213],{"class":467},[450,2058,2059],{"class":484},"xaat-xxx\n",[450,2061,2062,2065,2067],{"class":452,"line":491},[450,2063,2064],{"class":471},"AXIOM_DATASET",[450,2066,1213],{"class":467},[450,2068,2069],{"class":484},"my-logs\n",[450,2071,2072],{"class":452,"line":498},[450,2073,495],{"emptyLinePlaceholder":494},[450,2075,2076],{"class":452,"line":530},[450,2077,2078],{"class":456},"# OTLP (NUXT_OTLP_* or OTEL_*)\n",[450,2080,2081,2084,2086],{"class":452,"line":566},[450,2082,2083],{"class":471},"OTLP_ENDPOINT",[450,2085,1213],{"class":467},[450,2087,2088],{"class":484},"https:\u002F\u002Fotlp.example.com\n",[450,2090,2091],{"class":452,"line":684},[450,2092,495],{"emptyLinePlaceholder":494},[450,2094,2095],{"class":452,"line":699},[450,2096,2097],{"class":456},"# HyperDX (NUXT_HYPERDX_* or HYPERDX_*)\n",[450,2099,2100,2103,2106,2109],{"class":452,"line":1253},[450,2101,2102],{"class":471},"HYPERDX_API_KEY",[450,2104,2105],{"class":467},"=\u003C",[450,2107,2108],{"class":484},"YOUR_HYPERDX_API_KEY_HERE",[450,2110,2111],{"class":467},">\n",[450,2113,2114],{"class":452,"line":1262},[450,2115,495],{"emptyLinePlaceholder":494},[450,2117,2118],{"class":452,"line":1287},[450,2119,2120],{"class":456},"# PostHog (NUXT_POSTHOG_* or POSTHOG_*)\n",[450,2122,2123,2126,2128],{"class":452,"line":1294},[450,2124,2125],{"class":471},"POSTHOG_API_KEY",[450,2127,1213],{"class":467},[450,2129,2130],{"class":484},"phc_xxx\n",[450,2132,2133],{"class":452,"line":1301},[450,2134,495],{"emptyLinePlaceholder":494},[450,2136,2137],{"class":452,"line":1306},[450,2138,2139],{"class":456},"# Sentry (NUXT_SENTRY_* or SENTRY_*)\n",[450,2141,2142,2145,2147],{"class":452,"line":1340},[450,2143,2144],{"class":471},"SENTRY_DSN",[450,2146,1213],{"class":467},[450,2148,2149],{"class":484},"https:\u002F\u002Fkey@o0.ingest.sentry.io\u002F123\n",[450,2151,2152],{"class":452,"line":1345},[450,2153,495],{"emptyLinePlaceholder":494},[450,2155,2156],{"class":452,"line":1391},[450,2157,2158],{"class":456},"# Better Stack (NUXT_BETTER_STACK_* or BETTER_STACK_*)\n",[450,2160,2161,2164,2166],{"class":452,"line":1419},[450,2162,2163],{"class":471},"BETTER_STACK_SOURCE_TOKEN",[450,2165,1213],{"class":467},[450,2167,2168],{"class":484},"your-source-token\n",[450,2170,2171],{"class":452,"line":1433},[450,2172,495],{"emptyLinePlaceholder":494},[450,2174,2175],{"class":452,"line":1438},[450,2176,2177],{"class":456},"# Datadog (NUXT_DATADOG_* or DATADOG_* or DD_*)\n",[450,2179,2181,2184,2186],{"class":452,"line":2180},21,[450,2182,2183],{"class":471},"DD_API_KEY",[450,2185,1213],{"class":467},[450,2187,2188],{"class":484},"your-api-key\n",[450,2190,2192,2195,2197],{"class":452,"line":2191},22,[450,2193,2194],{"class":471},"DD_SITE",[450,2196,1213],{"class":467},[450,2198,2199],{"class":484},"datadoghq.eu\n",[409,2201,2202,2203,2206],{},"Adapters auto-read from these variables, so just call ",[424,2204,2205],{},"createXDrain()"," with no arguments.",[2208,2209,2210],"style",{},"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 .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 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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":446,"searchDepth":460,"depth":460,"links":2212},[2213,2214,2215,2216,2217,2218],{"id":418,"depth":460,"text":419},{"id":1049,"depth":460,"text":1050},{"id":1093,"depth":460,"text":1094},{"id":1465,"depth":460,"text":1466},{"id":1921,"depth":460,"text":1922},{"id":2025,"depth":460,"text":2026},"Send your logs to external services with evlog adapters. Built-in support for popular observability platforms and custom destinations.","md",[2222,2224,2225,2226,2227,2228,2229,2230,2231],{"label":313,"icon":316,"to":314,"color":1452,"variant":2223},"subtle",{"label":318,"icon":321,"to":319,"color":1452,"variant":2223},{"label":343,"icon":346,"to":344,"color":1452,"variant":2223},{"label":323,"icon":326,"to":324,"color":1452,"variant":2223},{"label":328,"icon":331,"to":329,"color":1452,"variant":2223},{"label":333,"icon":336,"to":334,"color":1452,"variant":2223},{"label":338,"icon":341,"to":339,"color":1452,"variant":2223},{"label":353,"icon":356,"to":354,"color":1452,"variant":2223},{"label":358,"icon":361,"to":359,"color":1452,"variant":2223},{},{"title":41,"icon":44},{"title":404,"description":2219},"PPdhSlp3hbPfQBpHnKk65PVKALpqdhN5jrs438s-lWM",[2237,2239],{"title":295,"path":296,"stem":297,"description":2238,"icon":298,"children":-1},"Replay and tail the local NDJSON drain with readFsLogs and tailFsLogs — works in-process or from any external Node tool.",{"title":313,"path":314,"stem":315,"description":2240,"icon":316,"children":-1},"Send wide events to Axiom for powerful querying, dashboards, and alerting. Zero-config setup with environment variables and automatic batching.",1778325959266]