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