[{"data":1,"prerenderedAt":4136},["ShallowReactive",2],{"navigation_docs":3,"-start-why-evlog":602,"-start-why-evlog-surround":4131},[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":15,"body":604,"description":4118,"extension":4119,"links":4120,"meta":4127,"navigation":4128,"path":16,"seo":4129,"stem":17,"__hash__":4130},"docs\u002F1.start\u002F2.why-evlog.md",{"type":605,"value":606,"toc":4105},"minimark",[607,621,635,640,643,648,705,709,712,725,745,763,777,794,801,805,808,973,983,991,995,1001,1061,1070,1074,1081,1104,1120,1124,1128,1135,3844,3866,3870,3876,3925,3928,3972,3978,3982,4047,4051,4101],[608,609,610,611,615,616,620],"p",{},"The cheapest moment to add structured logging is ",[612,613,614],"strong",{},"before the first request",". By the time you have 200 routes, 40 background jobs, and a ",[617,618,619],"code",{},"console.log"," per file, you're paying interest on a decision you never made. evlog is designed for the day-zero choice: pick it once, and the rest of the system inherits structured logs, structured errors, typed catalogs, AI SDK telemetry, an audit trail, and a drain pipeline you don't have to build later.",[622,623,626,627,629,630,634],"callout",{"color":624,"icon":625},"neutral","i-lucide-arrow-right","Already shipping with ",[617,628,619],{}," or pino? evlog still wins, but the case is different. See ",[631,632,633],"a",{"href":565},"evlog vs pino, winston, consola",".",[636,637,639],"h2",{"id":638},"what-you-get-from-day-one","What you get from day one",[608,641,642],{},"evlog isn't a small primitive you wrap. It's a single dependency that comes with a structured surface, an ecosystem of integrations, and an opinionated drain pipeline, all on by default.",[644,645,647],"h3",{"id":646},"logging-primitives","Logging primitives",[649,650,651,658,676,682,695,702],"card-group",{},[652,653,655,656,634],"card",{"icon":377,"title":654},"Auto-redaction","PII (emails, cards, IPs, phone numbers, JWTs, Bearer tokens, IBANs) is masked before console output and before any drain. See ",[631,657,71],{"href":72},[652,659,661,662,665,666,669,670,673,674,634],{"icon":59,"title":660},"Structured errors","Every error already carries ",[617,663,664],{},"why",", ",[617,667,668],{},"fix",", and ",[617,671,672],{},"link"," for your on-call (and your future AI agent). See ",[631,675,56],{"href":57},[652,677,679,680,634],{"icon":54,"title":678},"Wide events","Accumulate context across an operation and emit one typed event when it ends, the observability pattern that makes requests, jobs, and workflows queryable end-to-end. See ",[631,681,51],{"href":52},[652,683,685,688,689,692,693,634],{"icon":545,"title":684},"Typed catalogs",[617,686,687],{},"defineErrorCatalog"," and ",[617,690,691],{},"defineAuditCatalog"," give you enum-like, refactor-safe codes and actions. Start with two entries, grow to a published package. See ",[631,694,81],{"href":82},[652,696,699,700,634],{"icon":697,"title":698},"i-lucide-percent","Head + tail sampling","Drop low-importance events at emit time, force-keep slow requests and errors. Configure once, scale forever. See ",[631,701,66],{"href":67},[652,703,704],{"icon":354,"title":534},"Built-in batching, retry with exponential backoff, fan-out to multiple destinations. No drain plumbing to write yourself.",[644,706,708],{"id":707},"beyond-the-logger","Beyond the logger",[608,710,711],{},"The primitives are table stakes, and every modern logger has some flavour of them. Where evlog earns its place on day 1 is everything wired around them, for problems you haven't had yet.",[608,713,714,717,718,721,722,724],{},[612,715,716],{},"Imagine you add AI to your app."," Sooner or later you wire the Vercel AI SDK into a route. Token costs surprise you, a model hangs mid-stream, a tool returns garbage. With the ",[631,719,720],{"href":338},"AI SDK integration",", every model call becomes a wide event with prompt, tools, tokens, latency, and cost, automatically. And if you're using ",[631,723,360],{"href":366},", evlog ties the actor identity to those events for you, so you can answer \"which user just burned $14 in a single conversation?\" without writing a line of plumbing.",[608,726,727,730,731,734,735,665,738,665,741,744],{},[612,728,729],{},"Imagine your stack spans more than one framework."," A Nuxt frontend, a Hono internal service, an AWS Lambda webhook: most teams end up with this kind of mix. evlog has ",[631,732,733],{"href":236},"13+ framework integrations"," and each one exposes the same logging primitives (",[617,736,737],{},"useLogger",[617,739,740],{},"log.set",[617,742,743],{},"createError","). The handlers themselves stay framework-shaped, and that part is on you, but you don't relearn a logger every time you cross a runtime, and the drain pipeline behind them stays the same.",[608,746,747,750,751,754,755,758,759,762],{},[612,748,749],{},"Imagine you want noisier logs in dev than in production."," During local development you sprinkle ",[617,752,753],{},"log.debug"," calls (full request bodies, every retry, every guard) to actually see what's happening. None of that should ship. The ",[631,756,757],{"href":556},"Vite plugin"," strips selected log levels at build time, so dev has the verbose context you want and production stays clean. As a bonus, every surviving call gets its source location (",[617,760,761],{},"file.ts:42",") injected automatically, so when an event lands in your dashboard you know exactly which line emitted it.",[608,764,765,768,769,772,773,776],{},[612,766,767],{},"Imagine a user reports a bug from their browser."," The error happened in their session, deep inside a fetch you can't reproduce. evlog's ",[631,770,771],{"href":328},"browser logger"," ships client events to your server, where they merge into the same wide event as the rest of the request: one typed event, regardless of where the error originated. Combine it with the ",[631,774,775],{"href":441},"built-in enrichers"," and you also get UA, GeoIP, and W3C trace context attached for free.",[608,778,779,782,783,786,787,790,791,793],{},[612,780,781],{},"Imagine your stack changes vendor."," You started with stdout, signed Axiom for queries, then your team wants Sentry for errors and PostHog for product analytics. With ",[631,784,785],{"href":153},"9+ drain adapters"," and built-in fan-out, those events land everywhere in parallel, and the application code never moves. Self-hosting is a swap-in too, via the ",[631,788,789],{"href":217},"filesystem"," or ",[631,792,221],{"href":222}," adapters.",[608,795,796,797,800],{},"None of this is a \"v2 feature\". It is the same package, on the same ",[617,798,799],{},"log"," API, on day 1.",[636,802,804],{"id":803},"catalogs-grow-with-you","Catalogs grow with you",[608,806,807],{},"The smallest useful catalog is two entries:",[809,810,816],"pre",{"className":811,"code":812,"filename":813,"language":814,"meta":815,"style":815},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineErrorCatalog } from 'evlog'\n\nexport const errors = defineErrorCatalog('billing', {\n  PAYMENT_DECLINED: { status: 402, message: 'Payment declined' },\n  INVOICE_NOT_FOUND: { status: 404, message: 'Invoice not found' },\n})\n","src\u002Ferrors.ts","typescript","",[617,817,818,851,858,894,932,964],{"__ignoreMap":815},[819,820,823,827,831,835,838,841,844,848],"span",{"class":821,"line":822},"line",1,[819,824,826],{"class":825},"s7zQu","import",[819,828,830],{"class":829},"sMK4o"," {",[819,832,834],{"class":833},"sTEyZ"," defineErrorCatalog",[819,836,837],{"class":829}," }",[819,839,840],{"class":825}," from",[819,842,843],{"class":829}," '",[819,845,847],{"class":846},"sfazB","evlog",[819,849,850],{"class":829},"'\n",[819,852,854],{"class":821,"line":853},2,[819,855,857],{"emptyLinePlaceholder":856},true,"\n",[819,859,861,864,868,871,874,877,880,883,886,888,891],{"class":821,"line":860},3,[819,862,863],{"class":825},"export",[819,865,867],{"class":866},"spNyl"," const",[819,869,870],{"class":833}," errors ",[819,872,873],{"class":829},"=",[819,875,834],{"class":876},"s2Zo4",[819,878,879],{"class":833},"(",[819,881,882],{"class":829},"'",[819,884,885],{"class":846},"billing",[819,887,882],{"class":829},[819,889,890],{"class":829},",",[819,892,893],{"class":829}," {\n",[819,895,897,901,904,906,909,911,915,917,920,922,924,927,929],{"class":821,"line":896},4,[819,898,900],{"class":899},"swJcz","  PAYMENT_DECLINED",[819,902,903],{"class":829},":",[819,905,830],{"class":829},[819,907,908],{"class":899}," status",[819,910,903],{"class":829},[819,912,914],{"class":913},"sbssI"," 402",[819,916,890],{"class":829},[819,918,919],{"class":899}," message",[819,921,903],{"class":829},[819,923,843],{"class":829},[819,925,926],{"class":846},"Payment declined",[819,928,882],{"class":829},[819,930,931],{"class":829}," },\n",[819,933,935,938,940,942,944,946,949,951,953,955,957,960,962],{"class":821,"line":934},5,[819,936,937],{"class":899},"  INVOICE_NOT_FOUND",[819,939,903],{"class":829},[819,941,830],{"class":829},[819,943,908],{"class":899},[819,945,903],{"class":829},[819,947,948],{"class":913}," 404",[819,950,890],{"class":829},[819,952,919],{"class":899},[819,954,903],{"class":829},[819,956,843],{"class":829},[819,958,959],{"class":846},"Invoice not found",[819,961,882],{"class":829},[819,963,931],{"class":829},[819,965,967,970],{"class":821,"line":966},6,[819,968,969],{"class":829},"}",[819,971,972],{"class":833},")\n",[608,974,975,976,979,980],{},"Six months later it has thirty entries, type augmentation gives you autocomplete on ",[617,977,978],{},"createError({ code })"," everywhere, and you ship it as a private npm package across your monorepo. ",[612,981,982],{},"Same pattern. No rewrite.",[608,984,985,986,988,989,634],{},"The same applies to audit catalogs (",[617,987,691],{},"): start with one action, grow into your compliance map. See ",[631,990,81],{"href":82},[636,992,994],{"id":993},"built-for-the-ai-coding-agent-era","Built for the AI-coding-agent era",[608,996,997,998],{},"More and more applications are built with AI coding agents: Cursor, Codex, Claude Code, Copilot. They're good at writing handlers; they're worse at debugging them. ",[612,999,1000],{},"What they need is context.",[1002,1003,1004,1026,1032,1045,1051],"ul",{},[1005,1006,1007,1017,1018,1021,1022,1025],"li",{},[612,1008,1009,1010,1012,1013,1012,1015,634],{},"Structured errors with ",[617,1011,664],{}," \u002F ",[617,1014,668],{},[617,1016,672],{}," A vague ",[617,1019,1020],{},"Error: failed"," is opaque; ",[617,1023,1024],{},"createError({ message, why, fix, link })"," is something an agent can read, summarise, or surface to the user without you wiring a translation layer.",[1005,1027,1028,1031],{},[612,1029,1030],{},"Wide events as a single source of truth per request."," One typed event the agent can reason about end-to-end, not log lines to grep across.",[1005,1033,1034,1037,1038,665,1041,1044],{},[612,1035,1036],{},"Typed catalogs as an enum-like surface."," The agent doesn't invent error codes; it picks from ",[617,1039,1040],{},"errors.PAYMENT_DECLINED",[617,1042,1043],{},"audit.INVOICE_REFUND",", etc., with autocomplete from the catalog.",[1005,1046,1047,1050],{},[612,1048,1049],{},"AI SDK telemetry on every LLM call."," When the agent's own model calls fail, hallucinate, or burn budget, the wide event tells you which prompt, which tools, how many tokens, how much it cost.",[1005,1052,1053,1056,1057,1060],{},[612,1054,1055],{},"Agent skills built in."," evlog ships ",[631,1058,1059],{"href":570},"agent skills"," so Cursor \u002F Claude already know how to wire it up, no manual prompt-engineering.",[622,1062,1064,1065,1069],{"color":1063,"icon":132},"info","If your team's velocity comes from AI coding agents, the quality of your logs ",[1066,1067,1068],"em",{},"is"," the quality of their context window. Day 0 is when you set that ceiling.",[636,1071,1073],{"id":1072},"audit-and-compliance-cheap-now-expensive-later","Audit and compliance: cheap now, expensive later",[608,1075,1076,1077,1080],{},"Every product eventually meets one of: GDPR data-export requests, SOC 2 readiness, HIPAA in healthtech, PCI in payments, or simply an incident review where someone asks ",[612,1078,1079],{},"\"who deleted that?\"",". There are two ways to get a trail:",[1082,1083,1084,1090],"ol",{},[1005,1085,1086,1089],{},[612,1087,1088],{},"The day-1000 way."," Stand up a parallel system. Decide on a schema. Backfill what you can. Reverse-engineer actor identity from request headers. Ship under deadline pressure. Hope nothing was missed.",[1005,1091,1092,1095,1096,1099,1100,1103],{},[612,1093,1094],{},"The day-0 way."," Add ",[617,1097,1098],{},"auditEnricher()"," and call ",[617,1101,1102],{},"log.audit({ action, actor, target })"," from any handler that touches state. evlog ships hash-chain integrity, retention, and force-keep past sampling, on top of the wide events you were already emitting.",[608,1105,1106,1107,1110,1111,1113,1114,1117,1118,634],{},"evlog's audit layer is ",[612,1108,1109],{},"not a parallel system",". It is the same ",[617,1112,799],{}," you already use, with a reserved ",[617,1115,1116],{},"audit"," field. See ",[631,1119,387],{"href":393},[622,1121,1123],{"color":1122,"icon":388},"success","Teams in regulated verticals (fintech, healthtech, B2B SaaS) should treat day-0 audit logging as table stakes, not a v2 feature.",[636,1125,1127],{"id":1126},"drain-agnostic-from-day-one","Drain-agnostic from day one",[608,1129,1130,1131,1134],{},"Your application code never depends on a vendor. It emits to the drain pipeline. On day 0 that's stdout in dev and a ",[631,1132,1133],{"href":217},"filesystem drain"," in CI. The day you decide to query logs:",[1136,1137,1138,1331,1559,1782,1974,2184,2392,2575,2755,2939,3119,3299,3491,3671],"framework-tabs",{},[809,1139,1142],{"className":811,"code":1140,"filename":240,"language":814,"meta":1141,"style":815},"import { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nexport default defineNuxtConfig({\n  evlog: {\n    drain: {\n      adapters: [\n        createAxiomDrain({ token: '...', dataset: 'app' }),\n        createSentryDrain({ dsn: '...' }),\n      ],\n    },\n  },\n})\n","nuxt.config.ts",[617,1143,1144,1164,1184,1188,1203,1212,1221,1232,1277,1304,1312,1318,1324],{"__ignoreMap":815},[819,1145,1146,1148,1150,1153,1155,1157,1159,1162],{"class":821,"line":822},[819,1147,826],{"class":825},[819,1149,830],{"class":829},[819,1151,1152],{"class":833}," createAxiomDrain",[819,1154,837],{"class":829},[819,1156,840],{"class":825},[819,1158,843],{"class":829},[819,1160,1161],{"class":846},"evlog\u002Faxiom",[819,1163,850],{"class":829},[819,1165,1166,1168,1170,1173,1175,1177,1179,1182],{"class":821,"line":853},[819,1167,826],{"class":825},[819,1169,830],{"class":829},[819,1171,1172],{"class":833}," createSentryDrain",[819,1174,837],{"class":829},[819,1176,840],{"class":825},[819,1178,843],{"class":829},[819,1180,1181],{"class":846},"evlog\u002Fsentry",[819,1183,850],{"class":829},[819,1185,1186],{"class":821,"line":860},[819,1187,857],{"emptyLinePlaceholder":856},[819,1189,1190,1192,1195,1198,1200],{"class":821,"line":896},[819,1191,863],{"class":825},[819,1193,1194],{"class":825}," default",[819,1196,1197],{"class":876}," defineNuxtConfig",[819,1199,879],{"class":833},[819,1201,1202],{"class":829},"{\n",[819,1204,1205,1208,1210],{"class":821,"line":934},[819,1206,1207],{"class":899},"  evlog",[819,1209,903],{"class":829},[819,1211,893],{"class":829},[819,1213,1214,1217,1219],{"class":821,"line":966},[819,1215,1216],{"class":899},"    drain",[819,1218,903],{"class":829},[819,1220,893],{"class":829},[819,1222,1224,1227,1229],{"class":821,"line":1223},7,[819,1225,1226],{"class":899},"      adapters",[819,1228,903],{"class":829},[819,1230,1231],{"class":833}," [\n",[819,1233,1235,1238,1240,1243,1246,1248,1250,1253,1255,1257,1260,1262,1264,1267,1269,1271,1274],{"class":821,"line":1234},8,[819,1236,1237],{"class":876},"        createAxiomDrain",[819,1239,879],{"class":833},[819,1241,1242],{"class":829},"{",[819,1244,1245],{"class":899}," token",[819,1247,903],{"class":829},[819,1249,843],{"class":829},[819,1251,1252],{"class":846},"...",[819,1254,882],{"class":829},[819,1256,890],{"class":829},[819,1258,1259],{"class":899}," dataset",[819,1261,903],{"class":829},[819,1263,843],{"class":829},[819,1265,1266],{"class":846},"app",[819,1268,882],{"class":829},[819,1270,837],{"class":829},[819,1272,1273],{"class":833},")",[819,1275,1276],{"class":829},",\n",[819,1278,1280,1283,1285,1287,1290,1292,1294,1296,1298,1300,1302],{"class":821,"line":1279},9,[819,1281,1282],{"class":876},"        createSentryDrain",[819,1284,879],{"class":833},[819,1286,1242],{"class":829},[819,1288,1289],{"class":899}," dsn",[819,1291,903],{"class":829},[819,1293,843],{"class":829},[819,1295,1252],{"class":846},[819,1297,882],{"class":829},[819,1299,837],{"class":829},[819,1301,1273],{"class":833},[819,1303,1276],{"class":829},[819,1305,1307,1310],{"class":821,"line":1306},10,[819,1308,1309],{"class":833},"      ]",[819,1311,1276],{"class":829},[819,1313,1315],{"class":821,"line":1314},11,[819,1316,1317],{"class":829},"    },\n",[819,1319,1321],{"class":821,"line":1320},12,[819,1322,1323],{"class":829},"  },\n",[819,1325,1327,1329],{"class":821,"line":1326},13,[819,1328,969],{"class":829},[819,1330,972],{"class":833},[809,1332,1335],{"className":811,"code":1333,"filename":255,"language":814,"meta":1334,"style":815},"import { defineConfig } from 'nitro'\nimport evlog from 'evlog\u002Fnitro\u002Fv3'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nexport default defineConfig({\n  modules: [evlog({\n    drain: composeDrains([\n      createAxiomDrain({ token: '...', dataset: 'app' }),\n      createSentryDrain({ dsn: '...' }),\n    ]),\n  })],\n})\n","nitro.config.ts",[617,1336,1337,1357,1374,1394,1412,1430,1434,1446,1462,1473,1510,1535,1542,1552],{"__ignoreMap":815},[819,1338,1339,1341,1343,1346,1348,1350,1352,1355],{"class":821,"line":822},[819,1340,826],{"class":825},[819,1342,830],{"class":829},[819,1344,1345],{"class":833}," defineConfig",[819,1347,837],{"class":829},[819,1349,840],{"class":825},[819,1351,843],{"class":829},[819,1353,1354],{"class":846},"nitro",[819,1356,850],{"class":829},[819,1358,1359,1361,1364,1367,1369,1372],{"class":821,"line":853},[819,1360,826],{"class":825},[819,1362,1363],{"class":833}," evlog ",[819,1365,1366],{"class":825},"from",[819,1368,843],{"class":829},[819,1370,1371],{"class":846},"evlog\u002Fnitro\u002Fv3",[819,1373,850],{"class":829},[819,1375,1376,1378,1380,1383,1385,1387,1389,1392],{"class":821,"line":860},[819,1377,826],{"class":825},[819,1379,830],{"class":829},[819,1381,1382],{"class":833}," composeDrains",[819,1384,837],{"class":829},[819,1386,840],{"class":825},[819,1388,843],{"class":829},[819,1390,1391],{"class":846},"evlog\u002Ftoolkit",[819,1393,850],{"class":829},[819,1395,1396,1398,1400,1402,1404,1406,1408,1410],{"class":821,"line":896},[819,1397,826],{"class":825},[819,1399,830],{"class":829},[819,1401,1152],{"class":833},[819,1403,837],{"class":829},[819,1405,840],{"class":825},[819,1407,843],{"class":829},[819,1409,1161],{"class":846},[819,1411,850],{"class":829},[819,1413,1414,1416,1418,1420,1422,1424,1426,1428],{"class":821,"line":934},[819,1415,826],{"class":825},[819,1417,830],{"class":829},[819,1419,1172],{"class":833},[819,1421,837],{"class":829},[819,1423,840],{"class":825},[819,1425,843],{"class":829},[819,1427,1181],{"class":846},[819,1429,850],{"class":829},[819,1431,1432],{"class":821,"line":966},[819,1433,857],{"emptyLinePlaceholder":856},[819,1435,1436,1438,1440,1442,1444],{"class":821,"line":1223},[819,1437,863],{"class":825},[819,1439,1194],{"class":825},[819,1441,1345],{"class":876},[819,1443,879],{"class":833},[819,1445,1202],{"class":829},[819,1447,1448,1451,1453,1456,1458,1460],{"class":821,"line":1234},[819,1449,1450],{"class":899},"  modules",[819,1452,903],{"class":829},[819,1454,1455],{"class":833}," [",[819,1457,847],{"class":876},[819,1459,879],{"class":833},[819,1461,1202],{"class":829},[819,1463,1464,1466,1468,1470],{"class":821,"line":1279},[819,1465,1216],{"class":899},[819,1467,903],{"class":829},[819,1469,1382],{"class":876},[819,1471,1472],{"class":833},"([\n",[819,1474,1475,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,1508],{"class":821,"line":1306},[819,1476,1477],{"class":876},"      createAxiomDrain",[819,1479,879],{"class":833},[819,1481,1242],{"class":829},[819,1483,1245],{"class":899},[819,1485,903],{"class":829},[819,1487,843],{"class":829},[819,1489,1252],{"class":846},[819,1491,882],{"class":829},[819,1493,890],{"class":829},[819,1495,1259],{"class":899},[819,1497,903],{"class":829},[819,1499,843],{"class":829},[819,1501,1266],{"class":846},[819,1503,882],{"class":829},[819,1505,837],{"class":829},[819,1507,1273],{"class":833},[819,1509,1276],{"class":829},[819,1511,1512,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533],{"class":821,"line":1314},[819,1513,1514],{"class":876},"      createSentryDrain",[819,1516,879],{"class":833},[819,1518,1242],{"class":829},[819,1520,1289],{"class":899},[819,1522,903],{"class":829},[819,1524,843],{"class":829},[819,1526,1252],{"class":846},[819,1528,882],{"class":829},[819,1530,837],{"class":829},[819,1532,1273],{"class":833},[819,1534,1276],{"class":829},[819,1536,1537,1540],{"class":821,"line":1320},[819,1538,1539],{"class":833},"    ])",[819,1541,1276],{"class":829},[819,1543,1544,1547,1550],{"class":821,"line":1326},[819,1545,1546],{"class":829},"  }",[819,1548,1549],{"class":833},")]",[819,1551,1276],{"class":829},[819,1553,1555,1557],{"class":821,"line":1554},14,[819,1556,969],{"class":829},[819,1558,972],{"class":833},[809,1560,1563],{"className":811,"code":1561,"filename":245,"language":814,"meta":1562,"style":815},"import { createEvlog } from 'evlog\u002Fnext'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n})\n","lib\u002Fevlog.ts",[617,1564,1565,1585,1603,1621,1639,1643,1680,1696,1707,1744,1769,1776],{"__ignoreMap":815},[819,1566,1567,1569,1571,1574,1576,1578,1580,1583],{"class":821,"line":822},[819,1568,826],{"class":825},[819,1570,830],{"class":829},[819,1572,1573],{"class":833}," createEvlog",[819,1575,837],{"class":829},[819,1577,840],{"class":825},[819,1579,843],{"class":829},[819,1581,1582],{"class":846},"evlog\u002Fnext",[819,1584,850],{"class":829},[819,1586,1587,1589,1591,1593,1595,1597,1599,1601],{"class":821,"line":853},[819,1588,826],{"class":825},[819,1590,830],{"class":829},[819,1592,1382],{"class":833},[819,1594,837],{"class":829},[819,1596,840],{"class":825},[819,1598,843],{"class":829},[819,1600,1391],{"class":846},[819,1602,850],{"class":829},[819,1604,1605,1607,1609,1611,1613,1615,1617,1619],{"class":821,"line":860},[819,1606,826],{"class":825},[819,1608,830],{"class":829},[819,1610,1152],{"class":833},[819,1612,837],{"class":829},[819,1614,840],{"class":825},[819,1616,843],{"class":829},[819,1618,1161],{"class":846},[819,1620,850],{"class":829},[819,1622,1623,1625,1627,1629,1631,1633,1635,1637],{"class":821,"line":896},[819,1624,826],{"class":825},[819,1626,830],{"class":829},[819,1628,1172],{"class":833},[819,1630,837],{"class":829},[819,1632,840],{"class":825},[819,1634,843],{"class":829},[819,1636,1181],{"class":846},[819,1638,850],{"class":829},[819,1640,1641],{"class":821,"line":934},[819,1642,857],{"emptyLinePlaceholder":856},[819,1644,1645,1647,1649,1651,1654,1656,1659,1661,1664,1666,1669,1671,1674,1676,1678],{"class":821,"line":966},[819,1646,863],{"class":825},[819,1648,867],{"class":866},[819,1650,830],{"class":829},[819,1652,1653],{"class":833}," withEvlog",[819,1655,890],{"class":829},[819,1657,1658],{"class":833}," useLogger",[819,1660,890],{"class":829},[819,1662,1663],{"class":833}," log",[819,1665,890],{"class":829},[819,1667,1668],{"class":833}," createError ",[819,1670,969],{"class":829},[819,1672,1673],{"class":829}," =",[819,1675,1573],{"class":876},[819,1677,879],{"class":833},[819,1679,1202],{"class":829},[819,1681,1682,1685,1687,1689,1692,1694],{"class":821,"line":1223},[819,1683,1684],{"class":899},"  service",[819,1686,903],{"class":829},[819,1688,843],{"class":829},[819,1690,1691],{"class":846},"my-app",[819,1693,882],{"class":829},[819,1695,1276],{"class":829},[819,1697,1698,1701,1703,1705],{"class":821,"line":1234},[819,1699,1700],{"class":899},"  drain",[819,1702,903],{"class":829},[819,1704,1382],{"class":876},[819,1706,1472],{"class":833},[819,1708,1709,1712,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742],{"class":821,"line":1279},[819,1710,1711],{"class":876},"    createAxiomDrain",[819,1713,879],{"class":833},[819,1715,1242],{"class":829},[819,1717,1245],{"class":899},[819,1719,903],{"class":829},[819,1721,843],{"class":829},[819,1723,1252],{"class":846},[819,1725,882],{"class":829},[819,1727,890],{"class":829},[819,1729,1259],{"class":899},[819,1731,903],{"class":829},[819,1733,843],{"class":829},[819,1735,1266],{"class":846},[819,1737,882],{"class":829},[819,1739,837],{"class":829},[819,1741,1273],{"class":833},[819,1743,1276],{"class":829},[819,1745,1746,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767],{"class":821,"line":1306},[819,1747,1748],{"class":876},"    createSentryDrain",[819,1750,879],{"class":833},[819,1752,1242],{"class":829},[819,1754,1289],{"class":899},[819,1756,903],{"class":829},[819,1758,843],{"class":829},[819,1760,1252],{"class":846},[819,1762,882],{"class":829},[819,1764,837],{"class":829},[819,1766,1273],{"class":833},[819,1768,1276],{"class":829},[819,1770,1771,1774],{"class":821,"line":1314},[819,1772,1773],{"class":833},"  ])",[819,1775,1276],{"class":829},[819,1777,1778,1780],{"class":821,"line":1320},[819,1779,969],{"class":829},[819,1781,972],{"class":833},[809,1783,1786],{"className":811,"code":1784,"filename":250,"language":814,"meta":1785,"style":815},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nexport const { handle, handleError } = createEvlogHooks({\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n})\n","src\u002Fhooks.server.ts",[617,1787,1788,1808,1826,1844,1862,1866,1892,1902,1938,1962,1968],{"__ignoreMap":815},[819,1789,1790,1792,1794,1797,1799,1801,1803,1806],{"class":821,"line":822},[819,1791,826],{"class":825},[819,1793,830],{"class":829},[819,1795,1796],{"class":833}," createEvlogHooks",[819,1798,837],{"class":829},[819,1800,840],{"class":825},[819,1802,843],{"class":829},[819,1804,1805],{"class":846},"evlog\u002Fsveltekit",[819,1807,850],{"class":829},[819,1809,1810,1812,1814,1816,1818,1820,1822,1824],{"class":821,"line":853},[819,1811,826],{"class":825},[819,1813,830],{"class":829},[819,1815,1382],{"class":833},[819,1817,837],{"class":829},[819,1819,840],{"class":825},[819,1821,843],{"class":829},[819,1823,1391],{"class":846},[819,1825,850],{"class":829},[819,1827,1828,1830,1832,1834,1836,1838,1840,1842],{"class":821,"line":860},[819,1829,826],{"class":825},[819,1831,830],{"class":829},[819,1833,1152],{"class":833},[819,1835,837],{"class":829},[819,1837,840],{"class":825},[819,1839,843],{"class":829},[819,1841,1161],{"class":846},[819,1843,850],{"class":829},[819,1845,1846,1848,1850,1852,1854,1856,1858,1860],{"class":821,"line":896},[819,1847,826],{"class":825},[819,1849,830],{"class":829},[819,1851,1172],{"class":833},[819,1853,837],{"class":829},[819,1855,840],{"class":825},[819,1857,843],{"class":829},[819,1859,1181],{"class":846},[819,1861,850],{"class":829},[819,1863,1864],{"class":821,"line":934},[819,1865,857],{"emptyLinePlaceholder":856},[819,1867,1868,1870,1872,1874,1877,1879,1882,1884,1886,1888,1890],{"class":821,"line":966},[819,1869,863],{"class":825},[819,1871,867],{"class":866},[819,1873,830],{"class":829},[819,1875,1876],{"class":833}," handle",[819,1878,890],{"class":829},[819,1880,1881],{"class":833}," handleError ",[819,1883,969],{"class":829},[819,1885,1673],{"class":829},[819,1887,1796],{"class":876},[819,1889,879],{"class":833},[819,1891,1202],{"class":829},[819,1893,1894,1896,1898,1900],{"class":821,"line":1223},[819,1895,1700],{"class":899},[819,1897,903],{"class":829},[819,1899,1382],{"class":876},[819,1901,1472],{"class":833},[819,1903,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936],{"class":821,"line":1234},[819,1905,1711],{"class":876},[819,1907,879],{"class":833},[819,1909,1242],{"class":829},[819,1911,1245],{"class":899},[819,1913,903],{"class":829},[819,1915,843],{"class":829},[819,1917,1252],{"class":846},[819,1919,882],{"class":829},[819,1921,890],{"class":829},[819,1923,1259],{"class":899},[819,1925,903],{"class":829},[819,1927,843],{"class":829},[819,1929,1266],{"class":846},[819,1931,882],{"class":829},[819,1933,837],{"class":829},[819,1935,1273],{"class":833},[819,1937,1276],{"class":829},[819,1939,1940,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960],{"class":821,"line":1279},[819,1941,1748],{"class":876},[819,1943,879],{"class":833},[819,1945,1242],{"class":829},[819,1947,1289],{"class":899},[819,1949,903],{"class":829},[819,1951,843],{"class":829},[819,1953,1252],{"class":846},[819,1955,882],{"class":829},[819,1957,837],{"class":829},[819,1959,1273],{"class":833},[819,1961,1276],{"class":829},[819,1963,1964,1966],{"class":821,"line":1306},[819,1965,1773],{"class":833},[819,1967,1276],{"class":829},[819,1969,1970,1972],{"class":821,"line":1314},[819,1971,969],{"class":829},[819,1973,972],{"class":833},[809,1975,1976],{"className":811,"code":1333,"filename":260,"language":814,"meta":1334,"style":815},[617,1977,1978,1996,2010,2028,2046,2064,2068,2080,2094,2104,2140,2164,2170,2178],{"__ignoreMap":815},[819,1979,1980,1982,1984,1986,1988,1990,1992,1994],{"class":821,"line":822},[819,1981,826],{"class":825},[819,1983,830],{"class":829},[819,1985,1345],{"class":833},[819,1987,837],{"class":829},[819,1989,840],{"class":825},[819,1991,843],{"class":829},[819,1993,1354],{"class":846},[819,1995,850],{"class":829},[819,1997,1998,2000,2002,2004,2006,2008],{"class":821,"line":853},[819,1999,826],{"class":825},[819,2001,1363],{"class":833},[819,2003,1366],{"class":825},[819,2005,843],{"class":829},[819,2007,1371],{"class":846},[819,2009,850],{"class":829},[819,2011,2012,2014,2016,2018,2020,2022,2024,2026],{"class":821,"line":860},[819,2013,826],{"class":825},[819,2015,830],{"class":829},[819,2017,1382],{"class":833},[819,2019,837],{"class":829},[819,2021,840],{"class":825},[819,2023,843],{"class":829},[819,2025,1391],{"class":846},[819,2027,850],{"class":829},[819,2029,2030,2032,2034,2036,2038,2040,2042,2044],{"class":821,"line":896},[819,2031,826],{"class":825},[819,2033,830],{"class":829},[819,2035,1152],{"class":833},[819,2037,837],{"class":829},[819,2039,840],{"class":825},[819,2041,843],{"class":829},[819,2043,1161],{"class":846},[819,2045,850],{"class":829},[819,2047,2048,2050,2052,2054,2056,2058,2060,2062],{"class":821,"line":934},[819,2049,826],{"class":825},[819,2051,830],{"class":829},[819,2053,1172],{"class":833},[819,2055,837],{"class":829},[819,2057,840],{"class":825},[819,2059,843],{"class":829},[819,2061,1181],{"class":846},[819,2063,850],{"class":829},[819,2065,2066],{"class":821,"line":966},[819,2067,857],{"emptyLinePlaceholder":856},[819,2069,2070,2072,2074,2076,2078],{"class":821,"line":1223},[819,2071,863],{"class":825},[819,2073,1194],{"class":825},[819,2075,1345],{"class":876},[819,2077,879],{"class":833},[819,2079,1202],{"class":829},[819,2081,2082,2084,2086,2088,2090,2092],{"class":821,"line":1234},[819,2083,1450],{"class":899},[819,2085,903],{"class":829},[819,2087,1455],{"class":833},[819,2089,847],{"class":876},[819,2091,879],{"class":833},[819,2093,1202],{"class":829},[819,2095,2096,2098,2100,2102],{"class":821,"line":1279},[819,2097,1216],{"class":899},[819,2099,903],{"class":829},[819,2101,1382],{"class":876},[819,2103,1472],{"class":833},[819,2105,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2128,2130,2132,2134,2136,2138],{"class":821,"line":1306},[819,2107,1477],{"class":876},[819,2109,879],{"class":833},[819,2111,1242],{"class":829},[819,2113,1245],{"class":899},[819,2115,903],{"class":829},[819,2117,843],{"class":829},[819,2119,1252],{"class":846},[819,2121,882],{"class":829},[819,2123,890],{"class":829},[819,2125,1259],{"class":899},[819,2127,903],{"class":829},[819,2129,843],{"class":829},[819,2131,1266],{"class":846},[819,2133,882],{"class":829},[819,2135,837],{"class":829},[819,2137,1273],{"class":833},[819,2139,1276],{"class":829},[819,2141,2142,2144,2146,2148,2150,2152,2154,2156,2158,2160,2162],{"class":821,"line":1314},[819,2143,1514],{"class":876},[819,2145,879],{"class":833},[819,2147,1242],{"class":829},[819,2149,1289],{"class":899},[819,2151,903],{"class":829},[819,2153,843],{"class":829},[819,2155,1252],{"class":846},[819,2157,882],{"class":829},[819,2159,837],{"class":829},[819,2161,1273],{"class":833},[819,2163,1276],{"class":829},[819,2165,2166,2168],{"class":821,"line":1320},[819,2167,1539],{"class":833},[819,2169,1276],{"class":829},[819,2171,2172,2174,2176],{"class":821,"line":1326},[819,2173,1546],{"class":829},[819,2175,1549],{"class":833},[819,2177,1276],{"class":829},[819,2179,2180,2182],{"class":821,"line":1554},[819,2181,969],{"class":829},[819,2183,972],{"class":833},[809,2185,2188],{"className":811,"code":2186,"filename":290,"language":814,"meta":2187,"style":815},"import { evlog } from 'evlog\u002Freact-router'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nexport const middleware: Route.MiddlewareFunction[] = [\n  evlog({\n    drain: composeDrains([\n      createAxiomDrain({ token: '...', dataset: 'app' }),\n      createSentryDrain({ dsn: '...' }),\n    ]),\n  }),\n]\n","app\u002Froot.tsx",[617,2189,2190,2210,2228,2246,2264,2268,2295,2303,2313,2349,2373,2379,2387],{"__ignoreMap":815},[819,2191,2192,2194,2196,2199,2201,2203,2205,2208],{"class":821,"line":822},[819,2193,826],{"class":825},[819,2195,830],{"class":829},[819,2197,2198],{"class":833}," evlog",[819,2200,837],{"class":829},[819,2202,840],{"class":825},[819,2204,843],{"class":829},[819,2206,2207],{"class":846},"evlog\u002Freact-router",[819,2209,850],{"class":829},[819,2211,2212,2214,2216,2218,2220,2222,2224,2226],{"class":821,"line":853},[819,2213,826],{"class":825},[819,2215,830],{"class":829},[819,2217,1382],{"class":833},[819,2219,837],{"class":829},[819,2221,840],{"class":825},[819,2223,843],{"class":829},[819,2225,1391],{"class":846},[819,2227,850],{"class":829},[819,2229,2230,2232,2234,2236,2238,2240,2242,2244],{"class":821,"line":860},[819,2231,826],{"class":825},[819,2233,830],{"class":829},[819,2235,1152],{"class":833},[819,2237,837],{"class":829},[819,2239,840],{"class":825},[819,2241,843],{"class":829},[819,2243,1161],{"class":846},[819,2245,850],{"class":829},[819,2247,2248,2250,2252,2254,2256,2258,2260,2262],{"class":821,"line":896},[819,2249,826],{"class":825},[819,2251,830],{"class":829},[819,2253,1172],{"class":833},[819,2255,837],{"class":829},[819,2257,840],{"class":825},[819,2259,843],{"class":829},[819,2261,1181],{"class":846},[819,2263,850],{"class":829},[819,2265,2266],{"class":821,"line":934},[819,2267,857],{"emptyLinePlaceholder":856},[819,2269,2270,2272,2274,2277,2279,2283,2285,2288,2291,2293],{"class":821,"line":966},[819,2271,863],{"class":825},[819,2273,867],{"class":866},[819,2275,2276],{"class":833}," middleware",[819,2278,903],{"class":829},[819,2280,2282],{"class":2281},"sBMFI"," Route",[819,2284,634],{"class":829},[819,2286,2287],{"class":2281},"MiddlewareFunction",[819,2289,2290],{"class":833},"[] ",[819,2292,873],{"class":829},[819,2294,1231],{"class":833},[819,2296,2297,2299,2301],{"class":821,"line":1223},[819,2298,1207],{"class":876},[819,2300,879],{"class":833},[819,2302,1202],{"class":829},[819,2304,2305,2307,2309,2311],{"class":821,"line":1234},[819,2306,1216],{"class":899},[819,2308,903],{"class":829},[819,2310,1382],{"class":876},[819,2312,1472],{"class":833},[819,2314,2315,2317,2319,2321,2323,2325,2327,2329,2331,2333,2335,2337,2339,2341,2343,2345,2347],{"class":821,"line":1279},[819,2316,1477],{"class":876},[819,2318,879],{"class":833},[819,2320,1242],{"class":829},[819,2322,1245],{"class":899},[819,2324,903],{"class":829},[819,2326,843],{"class":829},[819,2328,1252],{"class":846},[819,2330,882],{"class":829},[819,2332,890],{"class":829},[819,2334,1259],{"class":899},[819,2336,903],{"class":829},[819,2338,843],{"class":829},[819,2340,1266],{"class":846},[819,2342,882],{"class":829},[819,2344,837],{"class":829},[819,2346,1273],{"class":833},[819,2348,1276],{"class":829},[819,2350,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371],{"class":821,"line":1306},[819,2352,1514],{"class":876},[819,2354,879],{"class":833},[819,2356,1242],{"class":829},[819,2358,1289],{"class":899},[819,2360,903],{"class":829},[819,2362,843],{"class":829},[819,2364,1252],{"class":846},[819,2366,882],{"class":829},[819,2368,837],{"class":829},[819,2370,1273],{"class":833},[819,2372,1276],{"class":829},[819,2374,2375,2377],{"class":821,"line":1314},[819,2376,1539],{"class":833},[819,2378,1276],{"class":829},[819,2380,2381,2383,2385],{"class":821,"line":1320},[819,2382,1546],{"class":829},[819,2384,1273],{"class":833},[819,2386,1276],{"class":829},[819,2388,2389],{"class":821,"line":1326},[819,2390,2391],{"class":833},"]\n",[809,2393,2396],{"className":811,"code":2394,"filename":275,"language":814,"meta":2395,"style":815},"import { evlog } from 'evlog\u002Fhono'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\napp.use(evlog({\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n}))\n","src\u002Findex.ts",[617,2397,2398,2417,2435,2453,2471,2475,2492,2502,2538,2562,2568],{"__ignoreMap":815},[819,2399,2400,2402,2404,2406,2408,2410,2412,2415],{"class":821,"line":822},[819,2401,826],{"class":825},[819,2403,830],{"class":829},[819,2405,2198],{"class":833},[819,2407,837],{"class":829},[819,2409,840],{"class":825},[819,2411,843],{"class":829},[819,2413,2414],{"class":846},"evlog\u002Fhono",[819,2416,850],{"class":829},[819,2418,2419,2421,2423,2425,2427,2429,2431,2433],{"class":821,"line":853},[819,2420,826],{"class":825},[819,2422,830],{"class":829},[819,2424,1382],{"class":833},[819,2426,837],{"class":829},[819,2428,840],{"class":825},[819,2430,843],{"class":829},[819,2432,1391],{"class":846},[819,2434,850],{"class":829},[819,2436,2437,2439,2441,2443,2445,2447,2449,2451],{"class":821,"line":860},[819,2438,826],{"class":825},[819,2440,830],{"class":829},[819,2442,1152],{"class":833},[819,2444,837],{"class":829},[819,2446,840],{"class":825},[819,2448,843],{"class":829},[819,2450,1161],{"class":846},[819,2452,850],{"class":829},[819,2454,2455,2457,2459,2461,2463,2465,2467,2469],{"class":821,"line":896},[819,2456,826],{"class":825},[819,2458,830],{"class":829},[819,2460,1172],{"class":833},[819,2462,837],{"class":829},[819,2464,840],{"class":825},[819,2466,843],{"class":829},[819,2468,1181],{"class":846},[819,2470,850],{"class":829},[819,2472,2473],{"class":821,"line":934},[819,2474,857],{"emptyLinePlaceholder":856},[819,2476,2477,2479,2481,2484,2486,2488,2490],{"class":821,"line":966},[819,2478,1266],{"class":833},[819,2480,634],{"class":829},[819,2482,2483],{"class":876},"use",[819,2485,879],{"class":833},[819,2487,847],{"class":876},[819,2489,879],{"class":833},[819,2491,1202],{"class":829},[819,2493,2494,2496,2498,2500],{"class":821,"line":1223},[819,2495,1700],{"class":899},[819,2497,903],{"class":829},[819,2499,1382],{"class":876},[819,2501,1472],{"class":833},[819,2503,2504,2506,2508,2510,2512,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536],{"class":821,"line":1234},[819,2505,1711],{"class":876},[819,2507,879],{"class":833},[819,2509,1242],{"class":829},[819,2511,1245],{"class":899},[819,2513,903],{"class":829},[819,2515,843],{"class":829},[819,2517,1252],{"class":846},[819,2519,882],{"class":829},[819,2521,890],{"class":829},[819,2523,1259],{"class":899},[819,2525,903],{"class":829},[819,2527,843],{"class":829},[819,2529,1266],{"class":846},[819,2531,882],{"class":829},[819,2533,837],{"class":829},[819,2535,1273],{"class":833},[819,2537,1276],{"class":829},[819,2539,2540,2542,2544,2546,2548,2550,2552,2554,2556,2558,2560],{"class":821,"line":1279},[819,2541,1748],{"class":876},[819,2543,879],{"class":833},[819,2545,1242],{"class":829},[819,2547,1289],{"class":899},[819,2549,903],{"class":829},[819,2551,843],{"class":829},[819,2553,1252],{"class":846},[819,2555,882],{"class":829},[819,2557,837],{"class":829},[819,2559,1273],{"class":833},[819,2561,1276],{"class":829},[819,2563,2564,2566],{"class":821,"line":1306},[819,2565,1773],{"class":833},[819,2567,1276],{"class":829},[819,2569,2570,2572],{"class":821,"line":1314},[819,2571,969],{"class":829},[819,2573,2574],{"class":833},"))\n",[809,2576,2578],{"className":811,"code":2577,"filename":270,"language":814,"meta":2395,"style":815},"import { evlog } from 'evlog\u002Fexpress'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\napp.use(evlog({\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n}))\n",[617,2579,2580,2599,2617,2635,2653,2657,2673,2683,2719,2743,2749],{"__ignoreMap":815},[819,2581,2582,2584,2586,2588,2590,2592,2594,2597],{"class":821,"line":822},[819,2583,826],{"class":825},[819,2585,830],{"class":829},[819,2587,2198],{"class":833},[819,2589,837],{"class":829},[819,2591,840],{"class":825},[819,2593,843],{"class":829},[819,2595,2596],{"class":846},"evlog\u002Fexpress",[819,2598,850],{"class":829},[819,2600,2601,2603,2605,2607,2609,2611,2613,2615],{"class":821,"line":853},[819,2602,826],{"class":825},[819,2604,830],{"class":829},[819,2606,1382],{"class":833},[819,2608,837],{"class":829},[819,2610,840],{"class":825},[819,2612,843],{"class":829},[819,2614,1391],{"class":846},[819,2616,850],{"class":829},[819,2618,2619,2621,2623,2625,2627,2629,2631,2633],{"class":821,"line":860},[819,2620,826],{"class":825},[819,2622,830],{"class":829},[819,2624,1152],{"class":833},[819,2626,837],{"class":829},[819,2628,840],{"class":825},[819,2630,843],{"class":829},[819,2632,1161],{"class":846},[819,2634,850],{"class":829},[819,2636,2637,2639,2641,2643,2645,2647,2649,2651],{"class":821,"line":896},[819,2638,826],{"class":825},[819,2640,830],{"class":829},[819,2642,1172],{"class":833},[819,2644,837],{"class":829},[819,2646,840],{"class":825},[819,2648,843],{"class":829},[819,2650,1181],{"class":846},[819,2652,850],{"class":829},[819,2654,2655],{"class":821,"line":934},[819,2656,857],{"emptyLinePlaceholder":856},[819,2658,2659,2661,2663,2665,2667,2669,2671],{"class":821,"line":966},[819,2660,1266],{"class":833},[819,2662,634],{"class":829},[819,2664,2483],{"class":876},[819,2666,879],{"class":833},[819,2668,847],{"class":876},[819,2670,879],{"class":833},[819,2672,1202],{"class":829},[819,2674,2675,2677,2679,2681],{"class":821,"line":1223},[819,2676,1700],{"class":899},[819,2678,903],{"class":829},[819,2680,1382],{"class":876},[819,2682,1472],{"class":833},[819,2684,2685,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2711,2713,2715,2717],{"class":821,"line":1234},[819,2686,1711],{"class":876},[819,2688,879],{"class":833},[819,2690,1242],{"class":829},[819,2692,1245],{"class":899},[819,2694,903],{"class":829},[819,2696,843],{"class":829},[819,2698,1252],{"class":846},[819,2700,882],{"class":829},[819,2702,890],{"class":829},[819,2704,1259],{"class":899},[819,2706,903],{"class":829},[819,2708,843],{"class":829},[819,2710,1266],{"class":846},[819,2712,882],{"class":829},[819,2714,837],{"class":829},[819,2716,1273],{"class":833},[819,2718,1276],{"class":829},[819,2720,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739,2741],{"class":821,"line":1279},[819,2722,1748],{"class":876},[819,2724,879],{"class":833},[819,2726,1242],{"class":829},[819,2728,1289],{"class":899},[819,2730,903],{"class":829},[819,2732,843],{"class":829},[819,2734,1252],{"class":846},[819,2736,882],{"class":829},[819,2738,837],{"class":829},[819,2740,1273],{"class":833},[819,2742,1276],{"class":829},[819,2744,2745,2747],{"class":821,"line":1306},[819,2746,1773],{"class":833},[819,2748,1276],{"class":829},[819,2750,2751,2753],{"class":821,"line":1314},[819,2752,969],{"class":829},[819,2754,2574],{"class":833},[809,2756,2758],{"className":811,"code":2757,"filename":280,"language":814,"meta":2395,"style":815},"import { evlog } from 'evlog\u002Ffastify'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nawait app.register(evlog, {\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n})\n",[617,2759,2760,2779,2797,2815,2833,2837,2857,2867,2903,2927,2933],{"__ignoreMap":815},[819,2761,2762,2764,2766,2768,2770,2772,2774,2777],{"class":821,"line":822},[819,2763,826],{"class":825},[819,2765,830],{"class":829},[819,2767,2198],{"class":833},[819,2769,837],{"class":829},[819,2771,840],{"class":825},[819,2773,843],{"class":829},[819,2775,2776],{"class":846},"evlog\u002Ffastify",[819,2778,850],{"class":829},[819,2780,2781,2783,2785,2787,2789,2791,2793,2795],{"class":821,"line":853},[819,2782,826],{"class":825},[819,2784,830],{"class":829},[819,2786,1382],{"class":833},[819,2788,837],{"class":829},[819,2790,840],{"class":825},[819,2792,843],{"class":829},[819,2794,1391],{"class":846},[819,2796,850],{"class":829},[819,2798,2799,2801,2803,2805,2807,2809,2811,2813],{"class":821,"line":860},[819,2800,826],{"class":825},[819,2802,830],{"class":829},[819,2804,1152],{"class":833},[819,2806,837],{"class":829},[819,2808,840],{"class":825},[819,2810,843],{"class":829},[819,2812,1161],{"class":846},[819,2814,850],{"class":829},[819,2816,2817,2819,2821,2823,2825,2827,2829,2831],{"class":821,"line":896},[819,2818,826],{"class":825},[819,2820,830],{"class":829},[819,2822,1172],{"class":833},[819,2824,837],{"class":829},[819,2826,840],{"class":825},[819,2828,843],{"class":829},[819,2830,1181],{"class":846},[819,2832,850],{"class":829},[819,2834,2835],{"class":821,"line":934},[819,2836,857],{"emptyLinePlaceholder":856},[819,2838,2839,2842,2845,2847,2850,2853,2855],{"class":821,"line":966},[819,2840,2841],{"class":825},"await",[819,2843,2844],{"class":833}," app",[819,2846,634],{"class":829},[819,2848,2849],{"class":876},"register",[819,2851,2852],{"class":833},"(evlog",[819,2854,890],{"class":829},[819,2856,893],{"class":829},[819,2858,2859,2861,2863,2865],{"class":821,"line":1223},[819,2860,1700],{"class":899},[819,2862,903],{"class":829},[819,2864,1382],{"class":876},[819,2866,1472],{"class":833},[819,2868,2869,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2899,2901],{"class":821,"line":1234},[819,2870,1711],{"class":876},[819,2872,879],{"class":833},[819,2874,1242],{"class":829},[819,2876,1245],{"class":899},[819,2878,903],{"class":829},[819,2880,843],{"class":829},[819,2882,1252],{"class":846},[819,2884,882],{"class":829},[819,2886,890],{"class":829},[819,2888,1259],{"class":899},[819,2890,903],{"class":829},[819,2892,843],{"class":829},[819,2894,1266],{"class":846},[819,2896,882],{"class":829},[819,2898,837],{"class":829},[819,2900,1273],{"class":833},[819,2902,1276],{"class":829},[819,2904,2905,2907,2909,2911,2913,2915,2917,2919,2921,2923,2925],{"class":821,"line":1279},[819,2906,1748],{"class":876},[819,2908,879],{"class":833},[819,2910,1242],{"class":829},[819,2912,1289],{"class":899},[819,2914,903],{"class":829},[819,2916,843],{"class":829},[819,2918,1252],{"class":846},[819,2920,882],{"class":829},[819,2922,837],{"class":829},[819,2924,1273],{"class":833},[819,2926,1276],{"class":829},[819,2928,2929,2931],{"class":821,"line":1306},[819,2930,1773],{"class":833},[819,2932,1276],{"class":829},[819,2934,2935,2937],{"class":821,"line":1314},[819,2936,969],{"class":829},[819,2938,972],{"class":833},[809,2940,2942],{"className":811,"code":2941,"filename":285,"language":814,"meta":2395,"style":815},"import { evlog } from 'evlog\u002Felysia'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\napp.use(evlog({\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n}))\n",[617,2943,2944,2963,2981,2999,3017,3021,3037,3047,3083,3107,3113],{"__ignoreMap":815},[819,2945,2946,2948,2950,2952,2954,2956,2958,2961],{"class":821,"line":822},[819,2947,826],{"class":825},[819,2949,830],{"class":829},[819,2951,2198],{"class":833},[819,2953,837],{"class":829},[819,2955,840],{"class":825},[819,2957,843],{"class":829},[819,2959,2960],{"class":846},"evlog\u002Felysia",[819,2962,850],{"class":829},[819,2964,2965,2967,2969,2971,2973,2975,2977,2979],{"class":821,"line":853},[819,2966,826],{"class":825},[819,2968,830],{"class":829},[819,2970,1382],{"class":833},[819,2972,837],{"class":829},[819,2974,840],{"class":825},[819,2976,843],{"class":829},[819,2978,1391],{"class":846},[819,2980,850],{"class":829},[819,2982,2983,2985,2987,2989,2991,2993,2995,2997],{"class":821,"line":860},[819,2984,826],{"class":825},[819,2986,830],{"class":829},[819,2988,1152],{"class":833},[819,2990,837],{"class":829},[819,2992,840],{"class":825},[819,2994,843],{"class":829},[819,2996,1161],{"class":846},[819,2998,850],{"class":829},[819,3000,3001,3003,3005,3007,3009,3011,3013,3015],{"class":821,"line":896},[819,3002,826],{"class":825},[819,3004,830],{"class":829},[819,3006,1172],{"class":833},[819,3008,837],{"class":829},[819,3010,840],{"class":825},[819,3012,843],{"class":829},[819,3014,1181],{"class":846},[819,3016,850],{"class":829},[819,3018,3019],{"class":821,"line":934},[819,3020,857],{"emptyLinePlaceholder":856},[819,3022,3023,3025,3027,3029,3031,3033,3035],{"class":821,"line":966},[819,3024,1266],{"class":833},[819,3026,634],{"class":829},[819,3028,2483],{"class":876},[819,3030,879],{"class":833},[819,3032,847],{"class":876},[819,3034,879],{"class":833},[819,3036,1202],{"class":829},[819,3038,3039,3041,3043,3045],{"class":821,"line":1223},[819,3040,1700],{"class":899},[819,3042,903],{"class":829},[819,3044,1382],{"class":876},[819,3046,1472],{"class":833},[819,3048,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081],{"class":821,"line":1234},[819,3050,1711],{"class":876},[819,3052,879],{"class":833},[819,3054,1242],{"class":829},[819,3056,1245],{"class":899},[819,3058,903],{"class":829},[819,3060,843],{"class":829},[819,3062,1252],{"class":846},[819,3064,882],{"class":829},[819,3066,890],{"class":829},[819,3068,1259],{"class":899},[819,3070,903],{"class":829},[819,3072,843],{"class":829},[819,3074,1266],{"class":846},[819,3076,882],{"class":829},[819,3078,837],{"class":829},[819,3080,1273],{"class":833},[819,3082,1276],{"class":829},[819,3084,3085,3087,3089,3091,3093,3095,3097,3099,3101,3103,3105],{"class":821,"line":1279},[819,3086,1748],{"class":876},[819,3088,879],{"class":833},[819,3090,1242],{"class":829},[819,3092,1289],{"class":899},[819,3094,903],{"class":829},[819,3096,843],{"class":829},[819,3098,1252],{"class":846},[819,3100,882],{"class":829},[819,3102,837],{"class":829},[819,3104,1273],{"class":833},[819,3106,1276],{"class":829},[819,3108,3109,3111],{"class":821,"line":1306},[819,3110,1773],{"class":833},[819,3112,1276],{"class":829},[819,3114,3115,3117],{"class":821,"line":1314},[819,3116,969],{"class":829},[819,3118,2574],{"class":833},[809,3120,3123],{"className":811,"code":3121,"filename":265,"language":814,"meta":3122,"style":815},"import { EvlogModule } from 'evlog\u002Fnestjs'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nEvlogModule.forRoot({\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n})\n","src\u002Fapp.module.ts",[617,3124,3125,3145,3163,3181,3199,3203,3217,3227,3263,3287,3293],{"__ignoreMap":815},[819,3126,3127,3129,3131,3134,3136,3138,3140,3143],{"class":821,"line":822},[819,3128,826],{"class":825},[819,3130,830],{"class":829},[819,3132,3133],{"class":833}," EvlogModule",[819,3135,837],{"class":829},[819,3137,840],{"class":825},[819,3139,843],{"class":829},[819,3141,3142],{"class":846},"evlog\u002Fnestjs",[819,3144,850],{"class":829},[819,3146,3147,3149,3151,3153,3155,3157,3159,3161],{"class":821,"line":853},[819,3148,826],{"class":825},[819,3150,830],{"class":829},[819,3152,1382],{"class":833},[819,3154,837],{"class":829},[819,3156,840],{"class":825},[819,3158,843],{"class":829},[819,3160,1391],{"class":846},[819,3162,850],{"class":829},[819,3164,3165,3167,3169,3171,3173,3175,3177,3179],{"class":821,"line":860},[819,3166,826],{"class":825},[819,3168,830],{"class":829},[819,3170,1152],{"class":833},[819,3172,837],{"class":829},[819,3174,840],{"class":825},[819,3176,843],{"class":829},[819,3178,1161],{"class":846},[819,3180,850],{"class":829},[819,3182,3183,3185,3187,3189,3191,3193,3195,3197],{"class":821,"line":896},[819,3184,826],{"class":825},[819,3186,830],{"class":829},[819,3188,1172],{"class":833},[819,3190,837],{"class":829},[819,3192,840],{"class":825},[819,3194,843],{"class":829},[819,3196,1181],{"class":846},[819,3198,850],{"class":829},[819,3200,3201],{"class":821,"line":934},[819,3202,857],{"emptyLinePlaceholder":856},[819,3204,3205,3208,3210,3213,3215],{"class":821,"line":966},[819,3206,3207],{"class":833},"EvlogModule",[819,3209,634],{"class":829},[819,3211,3212],{"class":876},"forRoot",[819,3214,879],{"class":833},[819,3216,1202],{"class":829},[819,3218,3219,3221,3223,3225],{"class":821,"line":1223},[819,3220,1700],{"class":899},[819,3222,903],{"class":829},[819,3224,1382],{"class":876},[819,3226,1472],{"class":833},[819,3228,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257,3259,3261],{"class":821,"line":1234},[819,3230,1711],{"class":876},[819,3232,879],{"class":833},[819,3234,1242],{"class":829},[819,3236,1245],{"class":899},[819,3238,903],{"class":829},[819,3240,843],{"class":829},[819,3242,1252],{"class":846},[819,3244,882],{"class":829},[819,3246,890],{"class":829},[819,3248,1259],{"class":899},[819,3250,903],{"class":829},[819,3252,843],{"class":829},[819,3254,1266],{"class":846},[819,3256,882],{"class":829},[819,3258,837],{"class":829},[819,3260,1273],{"class":833},[819,3262,1276],{"class":829},[819,3264,3265,3267,3269,3271,3273,3275,3277,3279,3281,3283,3285],{"class":821,"line":1279},[819,3266,1748],{"class":876},[819,3268,879],{"class":833},[819,3270,1242],{"class":829},[819,3272,1289],{"class":899},[819,3274,903],{"class":829},[819,3276,843],{"class":829},[819,3278,1252],{"class":846},[819,3280,882],{"class":829},[819,3282,837],{"class":829},[819,3284,1273],{"class":833},[819,3286,1276],{"class":829},[819,3288,3289,3291],{"class":821,"line":1306},[819,3290,1773],{"class":833},[819,3292,1276],{"class":829},[819,3294,3295,3297],{"class":821,"line":1314},[819,3296,969],{"class":829},[819,3298,972],{"class":833},[809,3300,3303],{"className":811,"code":3301,"filename":309,"language":814,"meta":3302,"style":815},"import { withEvlog } from 'evlog\u002Forpc'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nconst handler = withEvlog(new RPCHandler(router), {\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n})\n","server\u002Forpc.ts",[617,3304,3305,3324,3342,3360,3378,3382,3409,3419,3455,3479,3485],{"__ignoreMap":815},[819,3306,3307,3309,3311,3313,3315,3317,3319,3322],{"class":821,"line":822},[819,3308,826],{"class":825},[819,3310,830],{"class":829},[819,3312,1653],{"class":833},[819,3314,837],{"class":829},[819,3316,840],{"class":825},[819,3318,843],{"class":829},[819,3320,3321],{"class":846},"evlog\u002Forpc",[819,3323,850],{"class":829},[819,3325,3326,3328,3330,3332,3334,3336,3338,3340],{"class":821,"line":853},[819,3327,826],{"class":825},[819,3329,830],{"class":829},[819,3331,1382],{"class":833},[819,3333,837],{"class":829},[819,3335,840],{"class":825},[819,3337,843],{"class":829},[819,3339,1391],{"class":846},[819,3341,850],{"class":829},[819,3343,3344,3346,3348,3350,3352,3354,3356,3358],{"class":821,"line":860},[819,3345,826],{"class":825},[819,3347,830],{"class":829},[819,3349,1152],{"class":833},[819,3351,837],{"class":829},[819,3353,840],{"class":825},[819,3355,843],{"class":829},[819,3357,1161],{"class":846},[819,3359,850],{"class":829},[819,3361,3362,3364,3366,3368,3370,3372,3374,3376],{"class":821,"line":896},[819,3363,826],{"class":825},[819,3365,830],{"class":829},[819,3367,1172],{"class":833},[819,3369,837],{"class":829},[819,3371,840],{"class":825},[819,3373,843],{"class":829},[819,3375,1181],{"class":846},[819,3377,850],{"class":829},[819,3379,3380],{"class":821,"line":934},[819,3381,857],{"emptyLinePlaceholder":856},[819,3383,3384,3387,3390,3392,3394,3396,3399,3402,3405,3407],{"class":821,"line":966},[819,3385,3386],{"class":866},"const",[819,3388,3389],{"class":833}," handler ",[819,3391,873],{"class":829},[819,3393,1653],{"class":876},[819,3395,879],{"class":833},[819,3397,3398],{"class":829},"new",[819,3400,3401],{"class":876}," RPCHandler",[819,3403,3404],{"class":833},"(router)",[819,3406,890],{"class":829},[819,3408,893],{"class":829},[819,3410,3411,3413,3415,3417],{"class":821,"line":1223},[819,3412,1700],{"class":899},[819,3414,903],{"class":829},[819,3416,1382],{"class":876},[819,3418,1472],{"class":833},[819,3420,3421,3423,3425,3427,3429,3431,3433,3435,3437,3439,3441,3443,3445,3447,3449,3451,3453],{"class":821,"line":1234},[819,3422,1711],{"class":876},[819,3424,879],{"class":833},[819,3426,1242],{"class":829},[819,3428,1245],{"class":899},[819,3430,903],{"class":829},[819,3432,843],{"class":829},[819,3434,1252],{"class":846},[819,3436,882],{"class":829},[819,3438,890],{"class":829},[819,3440,1259],{"class":899},[819,3442,903],{"class":829},[819,3444,843],{"class":829},[819,3446,1266],{"class":846},[819,3448,882],{"class":829},[819,3450,837],{"class":829},[819,3452,1273],{"class":833},[819,3454,1276],{"class":829},[819,3456,3457,3459,3461,3463,3465,3467,3469,3471,3473,3475,3477],{"class":821,"line":1279},[819,3458,1748],{"class":876},[819,3460,879],{"class":833},[819,3462,1242],{"class":829},[819,3464,1289],{"class":899},[819,3466,903],{"class":829},[819,3468,843],{"class":829},[819,3470,1252],{"class":846},[819,3472,882],{"class":829},[819,3474,837],{"class":829},[819,3476,1273],{"class":833},[819,3478,1276],{"class":829},[819,3480,3481,3483],{"class":821,"line":1306},[819,3482,1773],{"class":833},[819,3484,1276],{"class":829},[819,3486,3487,3489],{"class":821,"line":1314},[819,3488,969],{"class":829},[819,3490,972],{"class":833},[809,3492,3495],{"className":811,"code":3493,"filename":295,"language":814,"meta":3494,"style":815},"import { withEvlog } from 'evlog\u002Fworkers'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\nexport default withEvlog(handler, {\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n})\n","src\u002Fworker.ts",[617,3496,3497,3516,3534,3552,3570,3574,3589,3599,3635,3659,3665],{"__ignoreMap":815},[819,3498,3499,3501,3503,3505,3507,3509,3511,3514],{"class":821,"line":822},[819,3500,826],{"class":825},[819,3502,830],{"class":829},[819,3504,1653],{"class":833},[819,3506,837],{"class":829},[819,3508,840],{"class":825},[819,3510,843],{"class":829},[819,3512,3513],{"class":846},"evlog\u002Fworkers",[819,3515,850],{"class":829},[819,3517,3518,3520,3522,3524,3526,3528,3530,3532],{"class":821,"line":853},[819,3519,826],{"class":825},[819,3521,830],{"class":829},[819,3523,1382],{"class":833},[819,3525,837],{"class":829},[819,3527,840],{"class":825},[819,3529,843],{"class":829},[819,3531,1391],{"class":846},[819,3533,850],{"class":829},[819,3535,3536,3538,3540,3542,3544,3546,3548,3550],{"class":821,"line":860},[819,3537,826],{"class":825},[819,3539,830],{"class":829},[819,3541,1152],{"class":833},[819,3543,837],{"class":829},[819,3545,840],{"class":825},[819,3547,843],{"class":829},[819,3549,1161],{"class":846},[819,3551,850],{"class":829},[819,3553,3554,3556,3558,3560,3562,3564,3566,3568],{"class":821,"line":896},[819,3555,826],{"class":825},[819,3557,830],{"class":829},[819,3559,1172],{"class":833},[819,3561,837],{"class":829},[819,3563,840],{"class":825},[819,3565,843],{"class":829},[819,3567,1181],{"class":846},[819,3569,850],{"class":829},[819,3571,3572],{"class":821,"line":934},[819,3573,857],{"emptyLinePlaceholder":856},[819,3575,3576,3578,3580,3582,3585,3587],{"class":821,"line":966},[819,3577,863],{"class":825},[819,3579,1194],{"class":825},[819,3581,1653],{"class":876},[819,3583,3584],{"class":833},"(handler",[819,3586,890],{"class":829},[819,3588,893],{"class":829},[819,3590,3591,3593,3595,3597],{"class":821,"line":1223},[819,3592,1700],{"class":899},[819,3594,903],{"class":829},[819,3596,1382],{"class":876},[819,3598,1472],{"class":833},[819,3600,3601,3603,3605,3607,3609,3611,3613,3615,3617,3619,3621,3623,3625,3627,3629,3631,3633],{"class":821,"line":1234},[819,3602,1711],{"class":876},[819,3604,879],{"class":833},[819,3606,1242],{"class":829},[819,3608,1245],{"class":899},[819,3610,903],{"class":829},[819,3612,843],{"class":829},[819,3614,1252],{"class":846},[819,3616,882],{"class":829},[819,3618,890],{"class":829},[819,3620,1259],{"class":899},[819,3622,903],{"class":829},[819,3624,843],{"class":829},[819,3626,1266],{"class":846},[819,3628,882],{"class":829},[819,3630,837],{"class":829},[819,3632,1273],{"class":833},[819,3634,1276],{"class":829},[819,3636,3637,3639,3641,3643,3645,3647,3649,3651,3653,3655,3657],{"class":821,"line":1279},[819,3638,1748],{"class":876},[819,3640,879],{"class":833},[819,3642,1242],{"class":829},[819,3644,1289],{"class":899},[819,3646,903],{"class":829},[819,3648,843],{"class":829},[819,3650,1252],{"class":846},[819,3652,882],{"class":829},[819,3654,837],{"class":829},[819,3656,1273],{"class":833},[819,3658,1276],{"class":829},[819,3660,3661,3663],{"class":821,"line":1306},[819,3662,1773],{"class":833},[819,3664,1276],{"class":829},[819,3666,3667,3669],{"class":821,"line":1314},[819,3668,969],{"class":829},[819,3670,972],{"class":833},[809,3672,3674],{"className":811,"code":3673,"filename":300,"language":814,"meta":2395,"style":815},"import { initLogger } from 'evlog'\nimport { composeDrains } from 'evlog\u002Ftoolkit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createSentryDrain } from 'evlog\u002Fsentry'\n\ninitLogger({\n  drain: composeDrains([\n    createAxiomDrain({ token: '...', dataset: 'app' }),\n    createSentryDrain({ dsn: '...' }),\n  ]),\n})\n",[617,3675,3676,3695,3713,3731,3749,3753,3762,3772,3808,3832,3838],{"__ignoreMap":815},[819,3677,3678,3680,3682,3685,3687,3689,3691,3693],{"class":821,"line":822},[819,3679,826],{"class":825},[819,3681,830],{"class":829},[819,3683,3684],{"class":833}," initLogger",[819,3686,837],{"class":829},[819,3688,840],{"class":825},[819,3690,843],{"class":829},[819,3692,847],{"class":846},[819,3694,850],{"class":829},[819,3696,3697,3699,3701,3703,3705,3707,3709,3711],{"class":821,"line":853},[819,3698,826],{"class":825},[819,3700,830],{"class":829},[819,3702,1382],{"class":833},[819,3704,837],{"class":829},[819,3706,840],{"class":825},[819,3708,843],{"class":829},[819,3710,1391],{"class":846},[819,3712,850],{"class":829},[819,3714,3715,3717,3719,3721,3723,3725,3727,3729],{"class":821,"line":860},[819,3716,826],{"class":825},[819,3718,830],{"class":829},[819,3720,1152],{"class":833},[819,3722,837],{"class":829},[819,3724,840],{"class":825},[819,3726,843],{"class":829},[819,3728,1161],{"class":846},[819,3730,850],{"class":829},[819,3732,3733,3735,3737,3739,3741,3743,3745,3747],{"class":821,"line":896},[819,3734,826],{"class":825},[819,3736,830],{"class":829},[819,3738,1172],{"class":833},[819,3740,837],{"class":829},[819,3742,840],{"class":825},[819,3744,843],{"class":829},[819,3746,1181],{"class":846},[819,3748,850],{"class":829},[819,3750,3751],{"class":821,"line":934},[819,3752,857],{"emptyLinePlaceholder":856},[819,3754,3755,3758,3760],{"class":821,"line":966},[819,3756,3757],{"class":876},"initLogger",[819,3759,879],{"class":833},[819,3761,1202],{"class":829},[819,3763,3764,3766,3768,3770],{"class":821,"line":1223},[819,3765,1700],{"class":899},[819,3767,903],{"class":829},[819,3769,1382],{"class":876},[819,3771,1472],{"class":833},[819,3773,3774,3776,3778,3780,3782,3784,3786,3788,3790,3792,3794,3796,3798,3800,3802,3804,3806],{"class":821,"line":1234},[819,3775,1711],{"class":876},[819,3777,879],{"class":833},[819,3779,1242],{"class":829},[819,3781,1245],{"class":899},[819,3783,903],{"class":829},[819,3785,843],{"class":829},[819,3787,1252],{"class":846},[819,3789,882],{"class":829},[819,3791,890],{"class":829},[819,3793,1259],{"class":899},[819,3795,903],{"class":829},[819,3797,843],{"class":829},[819,3799,1266],{"class":846},[819,3801,882],{"class":829},[819,3803,837],{"class":829},[819,3805,1273],{"class":833},[819,3807,1276],{"class":829},[819,3809,3810,3812,3814,3816,3818,3820,3822,3824,3826,3828,3830],{"class":821,"line":1279},[819,3811,1748],{"class":876},[819,3813,879],{"class":833},[819,3815,1242],{"class":829},[819,3817,1289],{"class":899},[819,3819,903],{"class":829},[819,3821,843],{"class":829},[819,3823,1252],{"class":846},[819,3825,882],{"class":829},[819,3827,837],{"class":829},[819,3829,1273],{"class":833},[819,3831,1276],{"class":829},[819,3833,3834,3836],{"class":821,"line":1306},[819,3835,1773],{"class":833},[819,3837,1276],{"class":829},[819,3839,3840,3842],{"class":821,"line":1314},[819,3841,969],{"class":829},[819,3843,972],{"class":833},[608,3845,3846,3847,665,3849,665,3851,665,3853,665,3855,665,3857,3859,3860,3862,3863,634],{},"Zero handler changes. The same events land in ",[631,3848,161],{"href":162},[631,3850,181],{"href":182},[631,3852,166],{"href":167},[631,3854,171],{"href":172},[631,3856,176],{"href":177},[631,3858,206],{"href":207},", or ",[631,3861,201],{"href":202},", or all of them, with ",[631,3864,3865],{"href":153},"fan-out",[636,3867,3869],{"id":3868},"what-later-actually-costs","What \"later\" actually costs",[608,3871,3872,3873,3875],{},"When teams ship with ",[617,3874,619],{}," and decide to add proper logging \"when we need it\", the bill comes due:",[1002,3877,3878,3897,3903,3909],{},[1005,3879,3880,3883,3884,665,3887,665,3890,3859,3893,3896],{},[612,3881,3882],{},"Settling field-name conventions after the fact."," Is it ",[617,3885,3886],{},"userId",[617,3888,3889],{},"user_id",[617,3891,3892],{},"uid",[617,3894,3895],{},"actor.id","? Once thirty services log it differently, you're writing migration scripts inside your observability vendor.",[1005,3898,3899,3902],{},[612,3900,3901],{},"Bolting on redaction post-incident."," Auto-redaction is trivial when no log exists yet. It's a P1 audit when six months of logs already contain PII.",[1005,3904,3905,3908],{},[612,3906,3907],{},"Choosing a drain under pressure."," Picking Datadog vs Axiom vs Sentry while you're already on fire is the worst time to evaluate vendors.",[1005,3910,3911,3914,3915,3918,3919,3921,3922,3924],{},[612,3912,3913],{},"Adding actionable error context retroactively."," Every ",[617,3916,3917],{},"throw new Error('failed')"," you wrote is one less ",[617,3920,664],{},", one less ",[617,3923,668],{},", one less link your on-call (or your AI agent) can use.",[608,3926,3927],{},"evlog removes the \"later\" entirely: the structured surface, the wide event lifecycle, and the drain pipeline are all there from day 1.",[3929,3930,3931,3944],"table",{},[3932,3933,3934],"thead",{},[3935,3936,3937,3941],"tr",{},[3938,3939,3940],"th",{},"Decision day",[3938,3942,3943],{},"Cost to adopt evlog",[3945,3946,3947,3956,3964],"tbody",{},[3935,3948,3949,3953],{},[3950,3951,3952],"td",{},"Day 0 (greenfield)",[3950,3954,3955],{},"Add the framework module. Done.",[3935,3957,3958,3961],{},[3950,3959,3960],{},"Day 30 (small app)",[3950,3962,3963],{},"Switch the logger surface — about a day of work.",[3935,3965,3966,3969],{},[3950,3967,3968],{},"Day 365 (production app)",[3950,3970,3971],{},"Walk the codebase to swap loggers, settle field-name conventions, fold in audit and redaction. The same cost as migrating between any two structured loggers.",[608,3973,3974,3975],{},"The asymmetry is the point. ",[612,3976,3977],{},"Start with evlog because the cost is zero. Stay with evlog because the cost of leaving is higher than building any of this yourself.",[636,3979,3981],{"id":3980},"day-0-in-practice","Day 0, in practice",[3983,3984,3987,3990,4019],"prompt",{":actions":3985,"description":3986,"icon":18},"[\"copy\",\"cursor\",\"claude\"]","Start a new project with evlog wired in from the first commit",[608,3988,3989],{},"I'm starting a new project. Wire in evlog from the first commit so I never have to retrofit logging.",[1002,3991,3992,3995,3998,4001,4004,4007,4010,4013,4016],{},[1005,3993,3994],{},"Detect my framework and install the matching evlog integration (Nuxt, Next.js, SvelteKit, Hono, Express, etc.)",[1005,3996,3997],{},"Set evlog.env.service to my app name and enable redact: true",[1005,3999,4000],{},"Add a useLogger(event) call in one route handler with log.set({ user, action }) so I have a working wide event from the start",[1005,4002,4003],{},"Throw one createError({ message, status, why, fix }) for an invalid input case",[1005,4005,4006],{},"Create a tiny errors catalog with defineErrorCatalog('app', { ... }), start with two entries, grow over time",[1005,4008,4009],{},"If the project uses Vercel AI SDK, wire the AI SDK middleware so every LLM call records tokens, tools, and cost",[1005,4011,4012],{},"If the project uses Better Auth, install the Better Auth plugin so auth events are typed from day 1",[1005,4014,4015],{},"Configure a filesystem drain for local dev (.evlog\u002Flogs) and leave the cloud drain commented out, ready to enable",[1005,4017,4018],{},"If my project is in a regulated vertical (fintech \u002F healthtech \u002F B2B SaaS), also wire the audit enricher with defineAuditCatalog",[608,4020,4021,4022,4027,4028,4032,4033,4037,4038,4042,4043],{},"Docs: ",[631,4023,4024],{"href":4024,"rel":4025},"https:\u002F\u002Fwww.evlog.dev\u002Fstart\u002Fwhy-evlog",[4026],"nofollow","\nFrameworks: ",[631,4029,4030],{"href":4030,"rel":4031},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[4026],"\nCatalogs: ",[631,4034,4035],{"href":4035,"rel":4036},"https:\u002F\u002Fwww.evlog.dev\u002Flearn\u002Fcatalogs",[4026],"\nAI SDK: ",[631,4039,4040],{"href":4040,"rel":4041},"https:\u002F\u002Fwww.evlog.dev\u002Fuse-cases\u002Fai-sdk\u002Foverview",[4026],"\nAudit: ",[631,4044,4045],{"href":4045,"rel":4046},"https:\u002F\u002Fwww.evlog.dev\u002Fuse-cases\u002Faudit\u002Foverview",[4026],[636,4048,4050],{"id":4049},"next-steps","Next steps",[1002,4052,4053,4058,4071,4076,4081,4086,4091,4096],{},[1005,4054,4055,4057],{},[631,4056,20],{"href":21},": pick your framework",[1005,4059,4060,4062,4063,665,4065,665,4068,4070],{},[631,4061,25],{"href":26},": ",[617,4064,737],{},[617,4066,4067],{},"createLogger",[617,4069,743],{}," in 2 minutes",[1005,4072,4073,4075],{},[631,4074,81],{"href":82},": typed errors and audit actions, day-0 to monorepo-scale",[1005,4077,4078,4080],{},[631,4079,387],{"href":393},": day-0 compliance posture",[1005,4082,4083,4085],{},[631,4084,332],{"href":338},": token usage, tool calls, streaming metrics",[1005,4087,4088,4090],{},[631,4089,360],{"href":366},": auth events with one-line install",[1005,4092,4093,4095],{},[631,4094,560],{"href":561},": what not to log, redaction, sampling",[1005,4097,4098,4100],{},[631,4099,633],{"href":565},": feature parity matrix and migration snippets",[4102,4103,4104],"style",{},"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":815,"searchDepth":853,"depth":853,"links":4106},[4107,4111,4112,4113,4114,4115,4116,4117],{"id":638,"depth":853,"text":639,"children":4108},[4109,4110],{"id":646,"depth":860,"text":647},{"id":707,"depth":860,"text":708},{"id":803,"depth":853,"text":804},{"id":993,"depth":853,"text":994},{"id":1072,"depth":853,"text":1073},{"id":1126,"depth":853,"text":1127},{"id":3868,"depth":853,"text":3869},{"id":3980,"depth":853,"text":3981},{"id":4049,"depth":853,"text":4050},"The cheapest moment to add structured logging is before the first request. Pick evlog on day zero and the rest of the system inherits it.","md",[4121,4123,4125],{"label":20,"icon":23,"to":21,"color":624,"variant":4122},"subtle",{"label":4124,"icon":388,"to":393,"color":624,"variant":4122},"Audit & Compliance",{"label":4126,"icon":567,"to":565,"color":624,"variant":4122},"vs pino, winston, consola",{},{"icon":18},{"title":15,"description":4118},"lqssdlhz8vMl0d2WCfLN8AX5qenWnBCMMSx_GlLPBGs",[4132,4134],{"title":10,"path":11,"stem":12,"description":4133,"icon":13,"children":-1},"Understand what happened in your app with evlog: structured logging, wide events, and errors that explain what went wrong and how to fix it.",{"title":20,"path":21,"stem":22,"description":4135,"icon":23,"children":-1},"Install evlog in your TypeScript project. Supports Nuxt, Next.js, SvelteKit, Hono, Express, Fastify, Elysia, NestJS, and standalone scripts.",1791103198682]