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