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