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