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