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