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