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