[{"data":1,"prerenderedAt":2363},["ShallowReactive",2],{"navigation_docs":3,"-start-introduction":612,"-start-introduction-surround":2359},[4,35,85,148,328,489,548,587],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133,138,143],{"title":41,"path":91,"stem":92,"icon":49},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":94,"path":95,"stem":96,"icon":97},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":99,"path":100,"stem":101,"icon":102},"logs","\u002Fcli\u002Flogs","3.cli\u002F10.logs","i-lucide-scroll-text",{"title":104,"path":105,"stem":106,"icon":107},"config","\u002Fcli\u002Fconfig","3.cli\u002F11.config","i-lucide-settings-2",{"title":109,"path":110,"stem":111,"icon":112},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":114,"path":115,"stem":116,"icon":117},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":119,"path":120,"stem":121,"icon":122},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":124,"path":125,"stem":126,"icon":127},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":129,"path":130,"stem":131,"icon":132},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":134,"path":135,"stem":136,"icon":137},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":139,"path":140,"stem":141,"icon":142},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":144,"path":145,"stem":146,"icon":147},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":149,"path":150,"stem":151,"children":152,"page":34},"Integrate","\u002Fintegrate","4.integrate",[153,157,240],{"title":41,"path":154,"stem":155,"icon":156},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":158,"path":159,"stem":160,"children":161,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[162,165,195,220],{"title":41,"path":163,"stem":164,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":166,"path":167,"stem":168,"children":169,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[170,175,180,185,190],{"title":171,"path":172,"stem":173,"icon":174},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":176,"path":177,"stem":178,"icon":179},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":181,"path":182,"stem":183,"icon":184},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":186,"path":187,"stem":188,"icon":189},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":191,"path":192,"stem":193,"icon":194},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":196,"path":197,"stem":198,"children":199,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[200,205,210,215],{"title":201,"path":202,"stem":203,"icon":204},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":206,"path":207,"stem":208,"icon":209},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":211,"path":212,"stem":213,"icon":214},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":216,"path":217,"stem":218,"icon":219},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":221,"path":222,"stem":223,"children":224,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[225,230,235],{"title":226,"path":227,"stem":228,"icon":229},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":231,"path":232,"stem":233,"icon":234},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":236,"path":237,"stem":238,"icon":239},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":241,"path":242,"stem":243,"children":244,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[245,249,254,259,264,269,274,279,284,289,294,299,304,309,313,318,323],{"title":41,"path":246,"stem":247,"icon":248},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":250,"path":251,"stem":252,"icon":253},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":255,"path":256,"stem":257,"icon":258},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":260,"path":261,"stem":262,"icon":263},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":265,"path":266,"stem":267,"icon":268},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":270,"path":271,"stem":272,"icon":273},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":275,"path":276,"stem":277,"icon":278},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":280,"path":281,"stem":282,"icon":283},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":285,"path":286,"stem":287,"icon":288},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":290,"path":291,"stem":292,"icon":293},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":295,"path":296,"stem":297,"icon":298},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":300,"path":301,"stem":302,"icon":303},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":305,"path":306,"stem":307,"icon":308},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":310,"path":311,"stem":312,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":314,"path":315,"stem":316,"icon":317},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":319,"path":320,"stem":321,"icon":322},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":324,"path":325,"stem":326,"icon":327},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":329,"path":330,"stem":331,"children":332,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[333,336,341,369,396,428,449,454,459,463],{"title":41,"path":334,"stem":335,"icon":117},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":337,"path":338,"stem":339,"icon":340},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":342,"icon":343,"path":344,"stem":345,"children":346,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[347,350,355,360,365],{"title":41,"path":348,"stem":349,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":351,"path":352,"stem":353,"icon":354},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":356,"path":357,"stem":358,"icon":359},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":361,"path":362,"stem":363,"icon":364},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":366,"path":367,"stem":368,"icon":147},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":370,"icon":371,"path":372,"stem":373,"children":374,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[375,378,383,388,392],{"title":41,"path":376,"stem":377,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":379,"path":380,"stem":381,"icon":382},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":384,"path":385,"stem":386,"icon":387},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":389,"path":390,"stem":391,"icon":340},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":393,"path":394,"stem":395,"icon":122},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":397,"icon":398,"path":399,"stem":400,"children":401,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[402,405,410,415,420,424],{"title":41,"path":403,"stem":404,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":406,"path":407,"stem":408,"icon":409},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":411,"path":412,"stem":413,"icon":414},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":416,"path":417,"stem":418,"icon":419},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":421,"path":422,"stem":423,"icon":398},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":425,"path":426,"stem":427,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":366,"icon":122,"path":429,"stem":430,"children":431,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[432,435,440,445],{"title":41,"path":433,"stem":434,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":436,"path":437,"stem":438,"icon":439},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":441,"path":442,"stem":443,"icon":444},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":446,"path":447,"stem":448,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":450,"path":451,"stem":452,"icon":453},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":455,"path":456,"stem":457,"icon":458},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":460,"path":461,"stem":462,"icon":444},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":464,"icon":465,"path":466,"stem":467,"children":468,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[469,472,477,482,485],{"title":41,"path":470,"stem":471,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":473,"path":474,"stem":475,"icon":476},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":478,"path":479,"stem":480,"icon":481},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":446,"path":483,"stem":484,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":425,"path":486,"stem":487,"icon":488},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":490,"path":491,"stem":492,"children":493,"page":34},"Extend","\u002Fextend","6.extend",[494,498,503,508,512,517,521,525,529,533,538,543],{"title":41,"path":495,"stem":496,"icon":497},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":499,"path":500,"stem":501,"icon":502},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":504,"path":505,"stem":506,"icon":507},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":509,"path":510,"stem":511,"icon":502},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":513,"path":514,"stem":515,"icon":516},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":425,"path":518,"stem":519,"icon":520},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":522,"path":523,"stem":524,"icon":497},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":526,"path":527,"stem":528,"icon":453},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":530,"path":531,"stem":532,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":534,"path":535,"stem":536,"icon":537},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":539,"path":540,"stem":541,"icon":542},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":544,"path":545,"stem":546,"icon":547},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":446,"path":549,"stem":550,"children":551,"page":34},"\u002Freference","7.reference",[552,556,561,564,569,573,578,582],{"title":41,"path":553,"stem":554,"icon":555},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":557,"path":558,"stem":559,"icon":560},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":393,"path":562,"stem":563,"icon":122},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":565,"path":566,"stem":567,"icon":568},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":570,"path":571,"stem":572,"icon":398},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":574,"path":575,"stem":576,"icon":577},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":579,"path":580,"stem":581,"icon":453},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":583,"path":584,"stem":585,"icon":586},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":588,"path":589,"stem":590,"children":591,"page":34},"Compare","\u002Fcompare","8.compare",[592,596,600,604,608],{"title":593,"path":594,"stem":595,"icon":577},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":597,"path":598,"stem":599,"icon":214},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":601,"path":602,"stem":603,"icon":577},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":605,"path":606,"stem":607,"icon":577},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":609,"path":610,"stem":611,"icon":577},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":613,"title":10,"body":614,"description":2344,"extension":2345,"links":2346,"meta":2355,"navigation":2356,"path":11,"seo":2357,"stem":12,"__hash__":2358},"docs\u002F1.start\u002F1.introduction.md",{"type":615,"value":616,"toc":2333},"minimark",[617,625,636,656,661,664,669,693,706,710,713,775,782,786,789,793,799,942,945,948,1214,1217,1975,1978,1981,1993,2245,2249,2256,2279,2289,2293,2329],[618,619,620,624],"p",{},[621,622,623],"strong",{},"evlog"," is a TypeScript logging library that helps you understand what happened in your app. Start with structured logs, bring a request’s context together in one wide event, and turn failures into errors that explain what went wrong and how to fix it.",[618,626,627,628,631,632,635],{},"Use it in your next project or introduce it alongside your existing logger. The ",[629,630,25],"a",{"href":26}," gets you going; the ",[629,633,634],{"href":47},"migration examples"," show how to bring familiar logging patterns to evlog.",[618,637,638,639,645,646,651,652,655],{},"Inspired by ",[629,640,644],{"href":641,"rel":642},"https:\u002F\u002Floggingsucks.com\u002F",[643],"nofollow","Logging Sucks"," by ",[629,647,650],{"href":648,"rel":649},"https:\u002F\u002Fx.com\u002Fboristane",[643],"Boris Tane",". The separate ",[629,653,654],{"href":91},"evlog CLI"," helps you explore your logs and spot missing logging patterns with static checks.",[657,658,660],"h2",{"id":659},"philosophy","Philosophy",[618,662,663],{},"Traditional logging is broken. Your logs are scattered across dozens of files. Each request generates 10+ log lines. When something goes wrong, you're left grep-ing through noise hoping to find signal.",[618,665,666,668],{},[621,667,623],{}," takes a different approach:",[670,671,672,682,685,688],"card-group",{},[673,674,676,677,681],"card",{"icon":49,"title":675},"Structured Logging","Replace ",[678,679,680],"code",{},"console.log"," with typed, structured events that flow through a drain pipeline. Same level filtering, redaction, and pretty\u002FJSON output as pino or consola.",[673,683,684],{"icon":54,"title":51},"Accumulate context over any unit of work (a request, script, or job) and emit once. The two modes coexist, and neither is an upgrade of the other.",[673,686,687],{"icon":59,"title":56},"Errors that explain why they occurred and how to fix them.",[673,689,692],{"icon":690,"title":691},"i-lucide-palette","Pretty for Dev","Human-readable in development, machine-parseable JSON in production.",[694,695,698,699,702,703,705],"callout",{"color":696,"icon":697},"info","i-lucide-globe","Not running an HTTP framework? See ",[629,700,701],{"href":311},"Standalone TypeScript"," for scripts, workers, and CLIs, and ",[629,704,305],{"href":306}," for the edge runtime.",[657,707,709],{"id":708},"why-evlog-over-pino-winston-or-consola","Why evlog over pino, winston, or consola",[618,711,712],{},"evlog is a fully-featured general-purpose logger that happens to also do wide events. Concretely:",[714,715,716,726,744,761],"ul",{},[717,718,719,722,723,725],"li",{},[621,720,721],{},"Zero runtime dependencies in the core package."," Start with the logger and add integrations as you need them. See ",[629,724,393],{"href":562}," for bundle sizes and benchmarks.",[717,727,728,731,732,735,736,739,740,743],{},[621,729,730],{},"Same API in every context",": scripts, frameworks, edge runtimes, browser, library code. No ",[678,733,734],{},"pino-http"," vs ",[678,737,738],{},"pino"," split, no separate ",[678,741,742],{},"consola"," reporters per environment.",[717,745,746,760],{},[621,747,748,749,752,753,752,756,759],{},"Structured errors with ",[678,750,751],{},"why"," \u002F ",[678,754,755],{},"fix",[678,757,758],{},"link"," built in",": your error toast finally tells users what went wrong and what to do, your on-call stops reverse-engineering stack traces.",[717,762,763,766,767,770,771,774],{},[621,764,765],{},"Wide events as a free upgrade path",": when you need to correlate context across an operation, the same logger gives you ",[678,768,769],{},"log.set"," + ",[678,772,773],{},"log.emit"," instead of stitching log lines together later.",[618,776,777,778,781],{},"See the full ",[629,779,780],{"href":575},"feature comparison"," (parity matrix, honest gaps, and migration snippets) for a side-by-side with pino, winston, and consola.",[657,783,785],{"id":784},"pick-one-of-three-ways-to-log","Pick one of three ways to log",[618,787,788],{},"evlog provides three APIs for different contexts. You can use all three in the same project.",[790,791,46],"h3",{"id":792},"simple-logging",[618,794,795,796,798],{},"Fire-and-forget structured logs. Replace ",[678,797,680],{},", consola, or pino:",[800,801,807],"pre",{"className":802,"code":803,"filename":804,"language":805,"meta":806,"style":806},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { log } from 'evlog'\n\nlog.info('auth', 'User logged in')\nlog.error({ action: 'payment', error: 'card_declined', userId: 42 })\n","src\u002Findex.ts","typescript","",[678,808,809,841,848,884],{"__ignoreMap":806},[810,811,814,818,822,826,829,832,835,838],"span",{"class":812,"line":813},"line",1,[810,815,817],{"class":816},"s7zQu","import",[810,819,821],{"class":820},"sMK4o"," {",[810,823,825],{"class":824},"sTEyZ"," log",[810,827,828],{"class":820}," }",[810,830,831],{"class":816}," from",[810,833,834],{"class":820}," '",[810,836,623],{"class":837},"sfazB",[810,839,840],{"class":820},"'\n",[810,842,844],{"class":812,"line":843},2,[810,845,847],{"emptyLinePlaceholder":846},true,"\n",[810,849,851,854,857,860,863,866,869,871,874,876,879,881],{"class":812,"line":850},3,[810,852,853],{"class":824},"log",[810,855,856],{"class":820},".",[810,858,696],{"class":859},"s2Zo4",[810,861,862],{"class":824},"(",[810,864,865],{"class":820},"'",[810,867,868],{"class":837},"auth",[810,870,865],{"class":820},[810,872,873],{"class":820},",",[810,875,834],{"class":820},[810,877,878],{"class":837},"User logged in",[810,880,865],{"class":820},[810,882,883],{"class":824},")\n",[810,885,887,889,891,894,896,899,903,906,908,911,913,915,918,920,922,925,927,929,932,934,938,940],{"class":812,"line":886},4,[810,888,853],{"class":824},[810,890,856],{"class":820},[810,892,893],{"class":859},"error",[810,895,862],{"class":824},[810,897,898],{"class":820},"{",[810,900,902],{"class":901},"swJcz"," action",[810,904,905],{"class":820},":",[810,907,834],{"class":820},[810,909,910],{"class":837},"payment",[810,912,865],{"class":820},[810,914,873],{"class":820},[810,916,917],{"class":901}," error",[810,919,905],{"class":820},[810,921,834],{"class":820},[810,923,924],{"class":837},"card_declined",[810,926,865],{"class":820},[810,928,873],{"class":820},[810,930,931],{"class":901}," userId",[810,933,905],{"class":820},[810,935,937],{"class":936},"sbssI"," 42",[810,939,828],{"class":820},[810,941,883],{"class":824},[790,943,51],{"id":944},"wide-events",[618,946,947],{},"Accumulate context progressively over any operation, then emit a single comprehensive event:",[949,950,951,1084],"code-group",{},[800,952,955],{"className":802,"code":953,"filename":954,"language":805,"meta":806,"style":806},"import { createLogger } from 'evlog'\n\nconst log = createLogger({ jobId: 'sync-001', queue: 'emails' })\nlog.set({ batch: { size: 50, processed: 50 } })\nlog.emit()\n","scripts\u002Fsync-job.ts",[678,956,957,976,980,1028,1071],{"__ignoreMap":806},[810,958,959,961,963,966,968,970,972,974],{"class":812,"line":813},[810,960,817],{"class":816},[810,962,821],{"class":820},[810,964,965],{"class":824}," createLogger",[810,967,828],{"class":820},[810,969,831],{"class":816},[810,971,834],{"class":820},[810,973,623],{"class":837},[810,975,840],{"class":820},[810,977,978],{"class":812,"line":843},[810,979,847],{"emptyLinePlaceholder":846},[810,981,982,986,989,992,994,996,998,1001,1003,1005,1008,1010,1012,1015,1017,1019,1022,1024,1026],{"class":812,"line":850},[810,983,985],{"class":984},"spNyl","const",[810,987,988],{"class":824}," log ",[810,990,991],{"class":820},"=",[810,993,965],{"class":859},[810,995,862],{"class":824},[810,997,898],{"class":820},[810,999,1000],{"class":901}," jobId",[810,1002,905],{"class":820},[810,1004,834],{"class":820},[810,1006,1007],{"class":837},"sync-001",[810,1009,865],{"class":820},[810,1011,873],{"class":820},[810,1013,1014],{"class":901}," queue",[810,1016,905],{"class":820},[810,1018,834],{"class":820},[810,1020,1021],{"class":837},"emails",[810,1023,865],{"class":820},[810,1025,828],{"class":820},[810,1027,883],{"class":824},[810,1029,1030,1032,1034,1037,1039,1041,1044,1046,1048,1051,1053,1056,1058,1061,1063,1065,1067,1069],{"class":812,"line":886},[810,1031,853],{"class":824},[810,1033,856],{"class":820},[810,1035,1036],{"class":859},"set",[810,1038,862],{"class":824},[810,1040,898],{"class":820},[810,1042,1043],{"class":901}," batch",[810,1045,905],{"class":820},[810,1047,821],{"class":820},[810,1049,1050],{"class":901}," size",[810,1052,905],{"class":820},[810,1054,1055],{"class":936}," 50",[810,1057,873],{"class":820},[810,1059,1060],{"class":901}," processed",[810,1062,905],{"class":820},[810,1064,1055],{"class":936},[810,1066,828],{"class":820},[810,1068,828],{"class":820},[810,1070,883],{"class":824},[810,1072,1074,1076,1078,1081],{"class":812,"line":1073},5,[810,1075,853],{"class":824},[810,1077,856],{"class":820},[810,1079,1080],{"class":859},"emit",[810,1082,1083],{"class":824},"()\n",[800,1085,1088],{"className":802,"code":1086,"filename":1087,"language":805,"meta":806,"style":806},"import { createRequestLogger } from 'evlog'\n\nconst log = createRequestLogger({ method: 'POST', path: '\u002Fapi\u002Fcheckout' })\nlog.set({ user: { id: 1, plan: 'pro' } })\nlog.emit()\n","src\u002Fworker.ts",[678,1089,1090,1109,1113,1157,1204],{"__ignoreMap":806},[810,1091,1092,1094,1096,1099,1101,1103,1105,1107],{"class":812,"line":813},[810,1093,817],{"class":816},[810,1095,821],{"class":820},[810,1097,1098],{"class":824}," createRequestLogger",[810,1100,828],{"class":820},[810,1102,831],{"class":816},[810,1104,834],{"class":820},[810,1106,623],{"class":837},[810,1108,840],{"class":820},[810,1110,1111],{"class":812,"line":843},[810,1112,847],{"emptyLinePlaceholder":846},[810,1114,1115,1117,1119,1121,1123,1125,1127,1130,1132,1134,1137,1139,1141,1144,1146,1148,1151,1153,1155],{"class":812,"line":850},[810,1116,985],{"class":984},[810,1118,988],{"class":824},[810,1120,991],{"class":820},[810,1122,1098],{"class":859},[810,1124,862],{"class":824},[810,1126,898],{"class":820},[810,1128,1129],{"class":901}," method",[810,1131,905],{"class":820},[810,1133,834],{"class":820},[810,1135,1136],{"class":837},"POST",[810,1138,865],{"class":820},[810,1140,873],{"class":820},[810,1142,1143],{"class":901}," path",[810,1145,905],{"class":820},[810,1147,834],{"class":820},[810,1149,1150],{"class":837},"\u002Fapi\u002Fcheckout",[810,1152,865],{"class":820},[810,1154,828],{"class":820},[810,1156,883],{"class":824},[810,1158,1159,1161,1163,1165,1167,1169,1172,1174,1176,1179,1181,1184,1186,1189,1191,1193,1196,1198,1200,1202],{"class":812,"line":886},[810,1160,853],{"class":824},[810,1162,856],{"class":820},[810,1164,1036],{"class":859},[810,1166,862],{"class":824},[810,1168,898],{"class":820},[810,1170,1171],{"class":901}," user",[810,1173,905],{"class":820},[810,1175,821],{"class":820},[810,1177,1178],{"class":901}," id",[810,1180,905],{"class":820},[810,1182,1183],{"class":936}," 1",[810,1185,873],{"class":820},[810,1187,1188],{"class":901}," plan",[810,1190,905],{"class":820},[810,1192,834],{"class":820},[810,1194,1195],{"class":837},"pro",[810,1197,865],{"class":820},[810,1199,828],{"class":820},[810,1201,828],{"class":820},[810,1203,883],{"class":824},[810,1205,1206,1208,1210,1212],{"class":812,"line":1073},[810,1207,853],{"class":824},[810,1209,856],{"class":820},[810,1211,1080],{"class":859},[810,1213,1083],{"class":824},[618,1215,1216],{},"With a framework integration, the logger is created when the request starts and emitted when the response ends. A handler only adds what it learns:",[1218,1219,1220,1382,1540,1693,1838],"framework-tabs",{},[800,1221,1224],{"className":802,"code":1222,"filename":250,"language":805,"meta":1223,"style":806},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  return { success: true }\n  \u002F\u002F auto-emitted on response end\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[678,1225,1226,1245,1249,1281,1299,1303,1347,1367,1374],{"__ignoreMap":806},[810,1227,1228,1230,1232,1235,1237,1239,1241,1243],{"class":812,"line":813},[810,1229,817],{"class":816},[810,1231,821],{"class":820},[810,1233,1234],{"class":824}," useLogger",[810,1236,828],{"class":820},[810,1238,831],{"class":816},[810,1240,834],{"class":820},[810,1242,623],{"class":837},[810,1244,840],{"class":820},[810,1246,1247],{"class":812,"line":843},[810,1248,847],{"emptyLinePlaceholder":846},[810,1250,1251,1254,1257,1260,1262,1265,1268,1272,1275,1278],{"class":812,"line":850},[810,1252,1253],{"class":816},"export",[810,1255,1256],{"class":816}," default",[810,1258,1259],{"class":859}," defineEventHandler",[810,1261,862],{"class":824},[810,1263,1264],{"class":984},"async",[810,1266,1267],{"class":820}," (",[810,1269,1271],{"class":1270},"sHdIc","event",[810,1273,1274],{"class":820},")",[810,1276,1277],{"class":984}," =>",[810,1279,1280],{"class":820}," {\n",[810,1282,1283,1286,1288,1291,1293,1295,1297],{"class":812,"line":886},[810,1284,1285],{"class":984},"  const",[810,1287,825],{"class":824},[810,1289,1290],{"class":820}," =",[810,1292,1234],{"class":859},[810,1294,862],{"class":901},[810,1296,1271],{"class":824},[810,1298,883],{"class":901},[810,1300,1301],{"class":812,"line":1073},[810,1302,847],{"emptyLinePlaceholder":846},[810,1304,1306,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345],{"class":812,"line":1305},6,[810,1307,1308],{"class":824},"  log",[810,1310,856],{"class":820},[810,1312,1036],{"class":859},[810,1314,862],{"class":901},[810,1316,898],{"class":820},[810,1318,1171],{"class":901},[810,1320,905],{"class":820},[810,1322,821],{"class":820},[810,1324,1178],{"class":901},[810,1326,905],{"class":820},[810,1328,1183],{"class":936},[810,1330,873],{"class":820},[810,1332,1188],{"class":901},[810,1334,905],{"class":820},[810,1336,834],{"class":820},[810,1338,1195],{"class":837},[810,1340,865],{"class":820},[810,1342,828],{"class":820},[810,1344,828],{"class":820},[810,1346,883],{"class":901},[810,1348,1350,1353,1355,1358,1360,1364],{"class":812,"line":1349},7,[810,1351,1352],{"class":816},"  return",[810,1354,821],{"class":820},[810,1356,1357],{"class":901}," success",[810,1359,905],{"class":820},[810,1361,1363],{"class":1362},"sfNiH"," true",[810,1365,1366],{"class":820}," }\n",[810,1368,1370],{"class":812,"line":1369},8,[810,1371,1373],{"class":1372},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[810,1375,1377,1380],{"class":812,"line":1376},9,[810,1378,1379],{"class":820},"}",[810,1381,883],{"class":824},[800,1383,1386],{"className":802,"code":1384,"filename":265,"language":805,"meta":1385,"style":806},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger } from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineHandler(async (event) => {\n  const log = useLogger(event)\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  return { success: true }\n  \u002F\u002F auto-emitted on response end\n})\n","routes\u002Fapi\u002Fcheckout.post.ts",[678,1387,1388,1408,1427,1431,1453,1469,1473,1515,1529,1533],{"__ignoreMap":806},[810,1389,1390,1392,1394,1397,1399,1401,1403,1406],{"class":812,"line":813},[810,1391,817],{"class":816},[810,1393,821],{"class":820},[810,1395,1396],{"class":824}," defineHandler",[810,1398,828],{"class":820},[810,1400,831],{"class":816},[810,1402,834],{"class":820},[810,1404,1405],{"class":837},"nitro\u002Fh3",[810,1407,840],{"class":820},[810,1409,1410,1412,1414,1416,1418,1420,1422,1425],{"class":812,"line":843},[810,1411,817],{"class":816},[810,1413,821],{"class":820},[810,1415,1234],{"class":824},[810,1417,828],{"class":820},[810,1419,831],{"class":816},[810,1421,834],{"class":820},[810,1423,1424],{"class":837},"evlog\u002Fnitro\u002Fv3",[810,1426,840],{"class":820},[810,1428,1429],{"class":812,"line":850},[810,1430,847],{"emptyLinePlaceholder":846},[810,1432,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451],{"class":812,"line":886},[810,1434,1253],{"class":816},[810,1436,1256],{"class":816},[810,1438,1396],{"class":859},[810,1440,862],{"class":824},[810,1442,1264],{"class":984},[810,1444,1267],{"class":820},[810,1446,1271],{"class":1270},[810,1448,1274],{"class":820},[810,1450,1277],{"class":984},[810,1452,1280],{"class":820},[810,1454,1455,1457,1459,1461,1463,1465,1467],{"class":812,"line":1073},[810,1456,1285],{"class":984},[810,1458,825],{"class":824},[810,1460,1290],{"class":820},[810,1462,1234],{"class":859},[810,1464,862],{"class":901},[810,1466,1271],{"class":824},[810,1468,883],{"class":901},[810,1470,1471],{"class":812,"line":1305},[810,1472,847],{"emptyLinePlaceholder":846},[810,1474,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513],{"class":812,"line":1349},[810,1476,1308],{"class":824},[810,1478,856],{"class":820},[810,1480,1036],{"class":859},[810,1482,862],{"class":901},[810,1484,898],{"class":820},[810,1486,1171],{"class":901},[810,1488,905],{"class":820},[810,1490,821],{"class":820},[810,1492,1178],{"class":901},[810,1494,905],{"class":820},[810,1496,1183],{"class":936},[810,1498,873],{"class":820},[810,1500,1188],{"class":901},[810,1502,905],{"class":820},[810,1504,834],{"class":820},[810,1506,1195],{"class":837},[810,1508,865],{"class":820},[810,1510,828],{"class":820},[810,1512,828],{"class":820},[810,1514,883],{"class":901},[810,1516,1517,1519,1521,1523,1525,1527],{"class":812,"line":1369},[810,1518,1352],{"class":816},[810,1520,821],{"class":820},[810,1522,1357],{"class":901},[810,1524,905],{"class":820},[810,1526,1363],{"class":1362},[810,1528,1366],{"class":820},[810,1530,1531],{"class":812,"line":1376},[810,1532,1373],{"class":1372},[810,1534,1536,1538],{"class":812,"line":1535},10,[810,1537,1379],{"class":820},[810,1539,883],{"class":824},[800,1541,1544],{"className":802,"code":1542,"filename":255,"language":805,"meta":1543,"style":806},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async () => {\n  const log = useLogger()\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  return Response.json({ success: true })\n  \u002F\u002F auto-emitted on response end\n})\n","app\u002Fapi\u002Fcheckout\u002Froute.ts",[678,1545,1546,1570,1574,1599,1611,1615,1657,1683,1687],{"__ignoreMap":806},[810,1547,1548,1550,1552,1555,1557,1559,1561,1563,1565,1568],{"class":812,"line":813},[810,1549,817],{"class":816},[810,1551,821],{"class":820},[810,1553,1554],{"class":824}," withEvlog",[810,1556,873],{"class":820},[810,1558,1234],{"class":824},[810,1560,828],{"class":820},[810,1562,831],{"class":816},[810,1564,834],{"class":820},[810,1566,1567],{"class":837},"@\u002Flib\u002Fevlog",[810,1569,840],{"class":820},[810,1571,1572],{"class":812,"line":843},[810,1573,847],{"emptyLinePlaceholder":846},[810,1575,1576,1578,1581,1584,1586,1588,1590,1592,1595,1597],{"class":812,"line":850},[810,1577,1253],{"class":816},[810,1579,1580],{"class":984}," const",[810,1582,1583],{"class":824}," POST ",[810,1585,991],{"class":820},[810,1587,1554],{"class":859},[810,1589,862],{"class":824},[810,1591,1264],{"class":984},[810,1593,1594],{"class":820}," ()",[810,1596,1277],{"class":984},[810,1598,1280],{"class":820},[810,1600,1601,1603,1605,1607,1609],{"class":812,"line":886},[810,1602,1285],{"class":984},[810,1604,825],{"class":824},[810,1606,1290],{"class":820},[810,1608,1234],{"class":859},[810,1610,1083],{"class":901},[810,1612,1613],{"class":812,"line":1073},[810,1614,847],{"emptyLinePlaceholder":846},[810,1616,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655],{"class":812,"line":1305},[810,1618,1308],{"class":824},[810,1620,856],{"class":820},[810,1622,1036],{"class":859},[810,1624,862],{"class":901},[810,1626,898],{"class":820},[810,1628,1171],{"class":901},[810,1630,905],{"class":820},[810,1632,821],{"class":820},[810,1634,1178],{"class":901},[810,1636,905],{"class":820},[810,1638,1183],{"class":936},[810,1640,873],{"class":820},[810,1642,1188],{"class":901},[810,1644,905],{"class":820},[810,1646,834],{"class":820},[810,1648,1195],{"class":837},[810,1650,865],{"class":820},[810,1652,828],{"class":820},[810,1654,828],{"class":820},[810,1656,883],{"class":901},[810,1658,1659,1661,1664,1666,1669,1671,1673,1675,1677,1679,1681],{"class":812,"line":1349},[810,1660,1352],{"class":816},[810,1662,1663],{"class":824}," Response",[810,1665,856],{"class":820},[810,1667,1668],{"class":859},"json",[810,1670,862],{"class":901},[810,1672,898],{"class":820},[810,1674,1357],{"class":901},[810,1676,905],{"class":820},[810,1678,1363],{"class":1362},[810,1680,828],{"class":820},[810,1682,883],{"class":901},[810,1684,1685],{"class":812,"line":1369},[810,1686,1373],{"class":1372},[810,1688,1689,1691],{"class":812,"line":1376},[810,1690,1379],{"class":820},[810,1692,883],{"class":824},[800,1694,1696],{"className":802,"code":1695,"filename":285,"language":805,"meta":804,"style":806},"app.post('\u002Fapi\u002Fcheckout', async (c) => {\n  const log = c.get('log')\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  return c.json({ success: true })\n  \u002F\u002F auto-emitted on response end\n})\n",[678,1697,1698,1732,1758,1762,1804,1828,1832],{"__ignoreMap":806},[810,1699,1700,1703,1705,1708,1710,1712,1714,1716,1718,1721,1723,1726,1728,1730],{"class":812,"line":813},[810,1701,1702],{"class":824},"app",[810,1704,856],{"class":820},[810,1706,1707],{"class":859},"post",[810,1709,862],{"class":824},[810,1711,865],{"class":820},[810,1713,1150],{"class":837},[810,1715,865],{"class":820},[810,1717,873],{"class":820},[810,1719,1720],{"class":984}," async",[810,1722,1267],{"class":820},[810,1724,1725],{"class":1270},"c",[810,1727,1274],{"class":820},[810,1729,1277],{"class":984},[810,1731,1280],{"class":820},[810,1733,1734,1736,1738,1740,1743,1745,1748,1750,1752,1754,1756],{"class":812,"line":843},[810,1735,1285],{"class":984},[810,1737,825],{"class":824},[810,1739,1290],{"class":820},[810,1741,1742],{"class":824}," c",[810,1744,856],{"class":820},[810,1746,1747],{"class":859},"get",[810,1749,862],{"class":901},[810,1751,865],{"class":820},[810,1753,853],{"class":837},[810,1755,865],{"class":820},[810,1757,883],{"class":901},[810,1759,1760],{"class":812,"line":850},[810,1761,847],{"emptyLinePlaceholder":846},[810,1763,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802],{"class":812,"line":886},[810,1765,1308],{"class":824},[810,1767,856],{"class":820},[810,1769,1036],{"class":859},[810,1771,862],{"class":901},[810,1773,898],{"class":820},[810,1775,1171],{"class":901},[810,1777,905],{"class":820},[810,1779,821],{"class":820},[810,1781,1178],{"class":901},[810,1783,905],{"class":820},[810,1785,1183],{"class":936},[810,1787,873],{"class":820},[810,1789,1188],{"class":901},[810,1791,905],{"class":820},[810,1793,834],{"class":820},[810,1795,1195],{"class":837},[810,1797,865],{"class":820},[810,1799,828],{"class":820},[810,1801,828],{"class":820},[810,1803,883],{"class":901},[810,1805,1806,1808,1810,1812,1814,1816,1818,1820,1822,1824,1826],{"class":812,"line":1073},[810,1807,1352],{"class":816},[810,1809,1742],{"class":824},[810,1811,856],{"class":820},[810,1813,1668],{"class":859},[810,1815,862],{"class":901},[810,1817,898],{"class":820},[810,1819,1357],{"class":901},[810,1821,905],{"class":820},[810,1823,1363],{"class":1362},[810,1825,828],{"class":820},[810,1827,883],{"class":901},[810,1829,1830],{"class":812,"line":1305},[810,1831,1373],{"class":1372},[810,1833,1834,1836],{"class":812,"line":1349},[810,1835,1379],{"class":820},[810,1837,883],{"class":824},[800,1839,1841],{"className":802,"code":1840,"filename":280,"language":805,"meta":804,"style":806},"app.post('\u002Fapi\u002Fcheckout', async (req, res) => {\n  const log = req.log\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  return res.json({ success: true })\n  \u002F\u002F auto-emitted on response end\n})\n",[678,1842,1843,1879,1895,1899,1941,1965,1969],{"__ignoreMap":806},[810,1844,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1868,1870,1873,1875,1877],{"class":812,"line":813},[810,1846,1702],{"class":824},[810,1848,856],{"class":820},[810,1850,1707],{"class":859},[810,1852,862],{"class":824},[810,1854,865],{"class":820},[810,1856,1150],{"class":837},[810,1858,865],{"class":820},[810,1860,873],{"class":820},[810,1862,1720],{"class":984},[810,1864,1267],{"class":820},[810,1866,1867],{"class":1270},"req",[810,1869,873],{"class":820},[810,1871,1872],{"class":1270}," res",[810,1874,1274],{"class":820},[810,1876,1277],{"class":984},[810,1878,1280],{"class":820},[810,1880,1881,1883,1885,1887,1890,1892],{"class":812,"line":843},[810,1882,1285],{"class":984},[810,1884,825],{"class":824},[810,1886,1290],{"class":820},[810,1888,1889],{"class":824}," req",[810,1891,856],{"class":820},[810,1893,1894],{"class":824},"log\n",[810,1896,1897],{"class":812,"line":850},[810,1898,847],{"emptyLinePlaceholder":846},[810,1900,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939],{"class":812,"line":886},[810,1902,1308],{"class":824},[810,1904,856],{"class":820},[810,1906,1036],{"class":859},[810,1908,862],{"class":901},[810,1910,898],{"class":820},[810,1912,1171],{"class":901},[810,1914,905],{"class":820},[810,1916,821],{"class":820},[810,1918,1178],{"class":901},[810,1920,905],{"class":820},[810,1922,1183],{"class":936},[810,1924,873],{"class":820},[810,1926,1188],{"class":901},[810,1928,905],{"class":820},[810,1930,834],{"class":820},[810,1932,1195],{"class":837},[810,1934,865],{"class":820},[810,1936,828],{"class":820},[810,1938,828],{"class":820},[810,1940,883],{"class":901},[810,1942,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1963],{"class":812,"line":1073},[810,1944,1352],{"class":816},[810,1946,1872],{"class":824},[810,1948,856],{"class":820},[810,1950,1668],{"class":859},[810,1952,862],{"class":901},[810,1954,898],{"class":820},[810,1956,1357],{"class":901},[810,1958,905],{"class":820},[810,1960,1363],{"class":1362},[810,1962,828],{"class":820},[810,1964,883],{"class":901},[810,1966,1967],{"class":812,"line":1305},[810,1968,1373],{"class":1372},[810,1970,1971,1973],{"class":812,"line":1349},[810,1972,1379],{"class":820},[810,1974,883],{"class":824},[618,1976,1977],{},"One log, all context. Everything you need to understand what happened.",[790,1979,56],{"id":1980},"structured-errors",[618,1982,1983,1984,1986,1987,1989,1990,1992],{},"Errors with actionable context: ",[678,1985,751],{}," it happened, how to ",[678,1988,755],{}," it, and a ",[678,1991,758],{}," to docs:",[949,1994,1995,2119],{},[800,1996,1999],{"className":802,"code":1997,"filename":1998,"language":805,"meta":806,"style":806},"import { createError } from 'evlog'\n\nthrow createError({\n  message: 'Payment failed',\n  status: 402,\n  why: 'Card declined by issuer (insufficient funds)',\n  fix: 'Try a different payment method or contact your bank',\n  link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n})\n","services\u002Fcheckout.ts",[678,2000,2001,2020,2024,2036,2053,2065,2081,2097,2113],{"__ignoreMap":806},[810,2002,2003,2005,2007,2010,2012,2014,2016,2018],{"class":812,"line":813},[810,2004,817],{"class":816},[810,2006,821],{"class":820},[810,2008,2009],{"class":824}," createError",[810,2011,828],{"class":820},[810,2013,831],{"class":816},[810,2015,834],{"class":820},[810,2017,623],{"class":837},[810,2019,840],{"class":820},[810,2021,2022],{"class":812,"line":843},[810,2023,847],{"emptyLinePlaceholder":846},[810,2025,2026,2029,2031,2033],{"class":812,"line":850},[810,2027,2028],{"class":816},"throw",[810,2030,2009],{"class":859},[810,2032,862],{"class":824},[810,2034,2035],{"class":820},"{\n",[810,2037,2038,2041,2043,2045,2048,2050],{"class":812,"line":886},[810,2039,2040],{"class":901},"  message",[810,2042,905],{"class":820},[810,2044,834],{"class":820},[810,2046,2047],{"class":837},"Payment failed",[810,2049,865],{"class":820},[810,2051,2052],{"class":820},",\n",[810,2054,2055,2058,2060,2063],{"class":812,"line":1073},[810,2056,2057],{"class":901},"  status",[810,2059,905],{"class":820},[810,2061,2062],{"class":936}," 402",[810,2064,2052],{"class":820},[810,2066,2067,2070,2072,2074,2077,2079],{"class":812,"line":1305},[810,2068,2069],{"class":901},"  why",[810,2071,905],{"class":820},[810,2073,834],{"class":820},[810,2075,2076],{"class":837},"Card declined by issuer (insufficient funds)",[810,2078,865],{"class":820},[810,2080,2052],{"class":820},[810,2082,2083,2086,2088,2090,2093,2095],{"class":812,"line":1349},[810,2084,2085],{"class":901},"  fix",[810,2087,905],{"class":820},[810,2089,834],{"class":820},[810,2091,2092],{"class":837},"Try a different payment method or contact your bank",[810,2094,865],{"class":820},[810,2096,2052],{"class":820},[810,2098,2099,2102,2104,2106,2109,2111],{"class":812,"line":1369},[810,2100,2101],{"class":901},"  link",[810,2103,905],{"class":820},[810,2105,834],{"class":820},[810,2107,2108],{"class":837},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[810,2110,865],{"class":820},[810,2112,2052],{"class":820},[810,2114,2115,2117],{"class":812,"line":1376},[810,2116,1379],{"class":820},[810,2118,883],{"class":824},[800,2120,2124],{"className":2121,"code":2122,"filename":2123,"language":1668,"meta":806,"style":806},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"statusCode\": 402,\n  \"message\": \"Payment failed\",\n  \"data\": {\n    \"why\": \"Card declined by issuer (insufficient funds)\",\n    \"fix\": \"Try a different payment method or contact your bank\",\n    \"link\": \"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined\"\n  }\n}\n","Response",[678,2125,2126,2130,2147,2167,2180,2200,2218,2235,2240],{"__ignoreMap":806},[810,2127,2128],{"class":812,"line":813},[810,2129,2035],{"class":820},[810,2131,2132,2135,2138,2141,2143,2145],{"class":812,"line":843},[810,2133,2134],{"class":820},"  \"",[810,2136,2137],{"class":984},"statusCode",[810,2139,2140],{"class":820},"\"",[810,2142,905],{"class":820},[810,2144,2062],{"class":936},[810,2146,2052],{"class":820},[810,2148,2149,2151,2154,2156,2158,2161,2163,2165],{"class":812,"line":850},[810,2150,2134],{"class":820},[810,2152,2153],{"class":984},"message",[810,2155,2140],{"class":820},[810,2157,905],{"class":820},[810,2159,2160],{"class":820}," \"",[810,2162,2047],{"class":837},[810,2164,2140],{"class":820},[810,2166,2052],{"class":820},[810,2168,2169,2171,2174,2176,2178],{"class":812,"line":886},[810,2170,2134],{"class":820},[810,2172,2173],{"class":984},"data",[810,2175,2140],{"class":820},[810,2177,905],{"class":820},[810,2179,1280],{"class":820},[810,2181,2182,2185,2188,2190,2192,2194,2196,2198],{"class":812,"line":1073},[810,2183,2184],{"class":820},"    \"",[810,2186,751],{"class":2187},"sBMFI",[810,2189,2140],{"class":820},[810,2191,905],{"class":820},[810,2193,2160],{"class":820},[810,2195,2076],{"class":837},[810,2197,2140],{"class":820},[810,2199,2052],{"class":820},[810,2201,2202,2204,2206,2208,2210,2212,2214,2216],{"class":812,"line":1305},[810,2203,2184],{"class":820},[810,2205,755],{"class":2187},[810,2207,2140],{"class":820},[810,2209,905],{"class":820},[810,2211,2160],{"class":820},[810,2213,2092],{"class":837},[810,2215,2140],{"class":820},[810,2217,2052],{"class":820},[810,2219,2220,2222,2224,2226,2228,2230,2232],{"class":812,"line":1349},[810,2221,2184],{"class":820},[810,2223,758],{"class":2187},[810,2225,2140],{"class":820},[810,2227,905],{"class":820},[810,2229,2160],{"class":820},[810,2231,2108],{"class":837},[810,2233,2234],{"class":820},"\"\n",[810,2236,2237],{"class":812,"line":1369},[810,2238,2239],{"class":820},"  }\n",[810,2241,2242],{"class":812,"line":1376},[810,2243,2244],{"class":820},"}\n",[657,2246,2248],{"id":2247},"why-one-event-beats-ten-lines","Why one event beats ten lines",[618,2250,2251,2252,2255],{},"We're entering an era where AI agents build, debug, and maintain applications. These agents need ",[621,2253,2254],{},"structured context"," to work effectively:",[714,2257,2258,2265,2272],{},[717,2259,2260,2264],{},[621,2261,2262],{},[678,2263,751],{},": The root cause, so the agent understands what went wrong",[717,2266,2267,2271],{},[621,2268,2269],{},[678,2270,755],{},": An actionable solution the agent can suggest or apply",[717,2273,2274,2278],{},[621,2275,2276],{},[678,2277,758],{},": Documentation for complex issues",[618,2280,2281,2282,2284,2285,2288],{},"Traditional ",[678,2283,680],{}," and generic ",[678,2286,2287],{},"throw new Error()"," provide no actionable context. evlog's structured output is designed for both humans and AI to parse and act on.",[657,2290,2292],{"id":2291},"next-steps","Next Steps",[714,2294,2295,2306,2319],{},[717,2296,2297,2300,2301,2303,2304,856],{},[621,2298,2299],{},"Try evlog:"," follow ",[629,2302,20],{"href":21}," and the ",[629,2305,25],{"href":26},[717,2307,2308,2311,2312,2315,2316,2318],{},[621,2309,2310],{},"Decide whether it fits your project:"," read ",[629,2313,2314],{"href":31},"Choosing a TypeScript Logger",", or ",[629,2317,15],{"href":16}," for a new application.",[717,2320,2321,2324,2325,2328],{},[621,2322,2323],{},"Explore the concepts:"," the ",[629,2326,2327],{"href":42},"Logging Overview"," connects simple logs, wide events, and structured errors.",[2330,2331,2332],"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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":806,"searchDepth":843,"depth":843,"links":2334},[2335,2336,2337,2342,2343],{"id":659,"depth":843,"text":660},{"id":708,"depth":843,"text":709},{"id":784,"depth":843,"text":785,"children":2338},[2339,2340,2341],{"id":792,"depth":850,"text":46},{"id":944,"depth":850,"text":51},{"id":1980,"depth":850,"text":56},{"id":2247,"depth":843,"text":2248},{"id":2291,"depth":843,"text":2292},"Understand what happened in your app with evlog: structured logging, wide events, and errors that explain what went wrong and how to fix it.","md",[2347,2350],{"label":25,"icon":28,"to":26,"color":2348,"variant":2349},"neutral","subtle",{"label":2351,"icon":2352,"to":2353,"target":2354,"color":2348,"variant":2349},"GitHub","i-simple-icons-github","https:\u002F\u002Fgithub.com\u002Fevloghq\u002Fevlog","_blank",{},{"icon":13},{"title":10,"description":2344},"FCusT6BjiEh1f8OIwZOIMjrS40BDRSIP5WgfoPnftvc",[2360,2361],null,{"title":15,"path":16,"stem":17,"description":2362,"icon":18,"children":-1},"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.",1791636469751]