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