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