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