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