[{"data":1,"prerenderedAt":2473},["ShallowReactive",2],{"navigation_docs":3,"-learn-overview":612,"-learn-overview-surround":2468},[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":614,"body":615,"description":2457,"extension":2458,"links":2459,"meta":2464,"navigation":2465,"path":42,"seo":2466,"stem":43,"__hash__":2467},"docs\u002F2.learn\u002F0.overview.md","Learn evlog",{"type":616,"value":617,"toc":2442},"minimark",[618,627,630,635,648,653,687,691,700,703,845,856,859,1125,1143,1147,1154,1911,1929,1933,2047,2051,2274,2282,2286,2289,2350,2354,2357,2426,2438],[619,620,621,622,626],"p",{},"This section is the ",[623,624,625],"strong",{},"mental model"," of evlog. By the end, you'll know exactly what evlog does, when each API fits, and how an event flows from your code to your drain.",[619,628,629],{},"If you're new, read it in order. If you've already shipped with evlog, jump to the page that matches your question.",[631,632,634],"callout",{"color":633,"icon":13},"info","All three modes coexist in the same logger. Pick per call. There is no upgrade path, no advanced mode, no toggle to flip. Same drains, same redaction, same types underneath.",[631,636,639,640,644,645,647],{"color":637,"icon":638},"neutral","i-lucide-globe","Not running an HTTP framework? See ",[641,642,643],"a",{"href":311},"Standalone TypeScript"," and ",[641,646,305],{"href":306},".",[649,650,652],"h2",{"id":651},"the-three-logging-modes","The three logging modes",[654,655,656,679,682],"card-group",{},[657,658,659,660,664,665,668,669,668,672,668,675,678],"card",{"color":637,"icon":49,"title":46,"to":47},"A fully-featured general-purpose logger. Replaces ",[661,662,663],"code",{},"console.log",", consola, pino, or winston with ",[661,666,667],{},"log.info",", ",[661,670,671],{},"log.error",[661,673,674],{},"log.warn",[661,676,677],{},"log.debug",", with the same level filtering, drain pipeline, redaction, and pretty\u002FJSON output.",[657,680,681],{"color":637,"icon":54,"title":51,"to":52},"Accumulate context over a unit of work (a script, job, queue task, or request) then emit a single comprehensive event.",[657,683,686],{"color":637,"icon":684,"title":685,"to":246},"i-lucide-git-branch","Request Logging","Auto-managed wide events scoped to HTTP requests. Framework middleware creates the logger and emits it for you.",[649,688,690],{"id":689},"compare-the-three-at-a-glance","Compare the three at a glance",[692,693,695,696,699],"h3",{"id":694},"simple-logging-log","Simple Logging (",[661,697,698],{},"log",")",[619,701,702],{},"One event per call. No accumulation, no lifecycle management.",[704,705,711],"pre",{"className":706,"code":707,"filename":708,"language":709,"meta":710,"style":710},"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","",[661,712,713,746,753,787],{"__ignoreMap":710},[714,715,718,722,726,730,733,736,739,743],"span",{"class":716,"line":717},"line",1,[714,719,721],{"class":720},"s7zQu","import",[714,723,725],{"class":724},"sMK4o"," {",[714,727,729],{"class":728},"sTEyZ"," log",[714,731,732],{"class":724}," }",[714,734,735],{"class":720}," from",[714,737,738],{"class":724}," '",[714,740,742],{"class":741},"sfazB","evlog",[714,744,745],{"class":724},"'\n",[714,747,749],{"class":716,"line":748},2,[714,750,752],{"emptyLinePlaceholder":751},true,"\n",[714,754,756,758,760,763,766,769,772,774,777,779,782,784],{"class":716,"line":755},3,[714,757,698],{"class":728},[714,759,647],{"class":724},[714,761,633],{"class":762},"s2Zo4",[714,764,765],{"class":728},"(",[714,767,768],{"class":724},"'",[714,770,771],{"class":741},"auth",[714,773,768],{"class":724},[714,775,776],{"class":724},",",[714,778,738],{"class":724},[714,780,781],{"class":741},"User logged in",[714,783,768],{"class":724},[714,785,786],{"class":728},")\n",[714,788,790,792,794,797,799,802,806,809,811,814,816,818,821,823,825,828,830,832,835,837,841,843],{"class":716,"line":789},4,[714,791,698],{"class":728},[714,793,647],{"class":724},[714,795,796],{"class":762},"error",[714,798,765],{"class":728},[714,800,801],{"class":724},"{",[714,803,805],{"class":804},"swJcz"," action",[714,807,808],{"class":724},":",[714,810,738],{"class":724},[714,812,813],{"class":741},"payment",[714,815,768],{"class":724},[714,817,776],{"class":724},[714,819,820],{"class":804}," error",[714,822,808],{"class":724},[714,824,738],{"class":724},[714,826,827],{"class":741},"card_declined",[714,829,768],{"class":724},[714,831,776],{"class":724},[714,833,834],{"class":804}," userId",[714,836,808],{"class":724},[714,838,840],{"class":839},"sbssI"," 42",[714,842,732],{"class":724},[714,844,786],{"class":728},[692,846,848,849,852,853,699],{"id":847},"wide-events-createlogger-createrequestlogger","Wide Events (",[661,850,851],{},"createLogger"," \u002F ",[661,854,855],{},"createRequestLogger",[619,857,858],{},"One event per unit of work. Accumulate context progressively, emit when done.",[860,861,862,995],"code-group",{},[704,863,866],{"className":706,"code":864,"filename":865,"language":709,"meta":710,"style":710},"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",[661,867,868,887,891,939,982],{"__ignoreMap":710},[714,869,870,872,874,877,879,881,883,885],{"class":716,"line":717},[714,871,721],{"class":720},[714,873,725],{"class":724},[714,875,876],{"class":728}," createLogger",[714,878,732],{"class":724},[714,880,735],{"class":720},[714,882,738],{"class":724},[714,884,742],{"class":741},[714,886,745],{"class":724},[714,888,889],{"class":716,"line":748},[714,890,752],{"emptyLinePlaceholder":751},[714,892,893,897,900,903,905,907,909,912,914,916,919,921,923,926,928,930,933,935,937],{"class":716,"line":755},[714,894,896],{"class":895},"spNyl","const",[714,898,899],{"class":728}," log ",[714,901,902],{"class":724},"=",[714,904,876],{"class":762},[714,906,765],{"class":728},[714,908,801],{"class":724},[714,910,911],{"class":804}," jobId",[714,913,808],{"class":724},[714,915,738],{"class":724},[714,917,918],{"class":741},"sync-001",[714,920,768],{"class":724},[714,922,776],{"class":724},[714,924,925],{"class":804}," queue",[714,927,808],{"class":724},[714,929,738],{"class":724},[714,931,932],{"class":741},"emails",[714,934,768],{"class":724},[714,936,732],{"class":724},[714,938,786],{"class":728},[714,940,941,943,945,948,950,952,955,957,959,962,964,967,969,972,974,976,978,980],{"class":716,"line":789},[714,942,698],{"class":728},[714,944,647],{"class":724},[714,946,947],{"class":762},"set",[714,949,765],{"class":728},[714,951,801],{"class":724},[714,953,954],{"class":804}," batch",[714,956,808],{"class":724},[714,958,725],{"class":724},[714,960,961],{"class":804}," size",[714,963,808],{"class":724},[714,965,966],{"class":839}," 50",[714,968,776],{"class":724},[714,970,971],{"class":804}," processed",[714,973,808],{"class":724},[714,975,966],{"class":839},[714,977,732],{"class":724},[714,979,732],{"class":724},[714,981,786],{"class":728},[714,983,985,987,989,992],{"class":716,"line":984},5,[714,986,698],{"class":728},[714,988,647],{"class":724},[714,990,991],{"class":762},"emit",[714,993,994],{"class":728},"()\n",[704,996,999],{"className":706,"code":997,"filename":998,"language":709,"meta":710,"style":710},"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",[661,1000,1001,1020,1024,1068,1115],{"__ignoreMap":710},[714,1002,1003,1005,1007,1010,1012,1014,1016,1018],{"class":716,"line":717},[714,1004,721],{"class":720},[714,1006,725],{"class":724},[714,1008,1009],{"class":728}," createRequestLogger",[714,1011,732],{"class":724},[714,1013,735],{"class":720},[714,1015,738],{"class":724},[714,1017,742],{"class":741},[714,1019,745],{"class":724},[714,1021,1022],{"class":716,"line":748},[714,1023,752],{"emptyLinePlaceholder":751},[714,1025,1026,1028,1030,1032,1034,1036,1038,1041,1043,1045,1048,1050,1052,1055,1057,1059,1062,1064,1066],{"class":716,"line":755},[714,1027,896],{"class":895},[714,1029,899],{"class":728},[714,1031,902],{"class":724},[714,1033,1009],{"class":762},[714,1035,765],{"class":728},[714,1037,801],{"class":724},[714,1039,1040],{"class":804}," method",[714,1042,808],{"class":724},[714,1044,738],{"class":724},[714,1046,1047],{"class":741},"POST",[714,1049,768],{"class":724},[714,1051,776],{"class":724},[714,1053,1054],{"class":804}," path",[714,1056,808],{"class":724},[714,1058,738],{"class":724},[714,1060,1061],{"class":741},"\u002Fapi\u002Fcheckout",[714,1063,768],{"class":724},[714,1065,732],{"class":724},[714,1067,786],{"class":728},[714,1069,1070,1072,1074,1076,1078,1080,1083,1085,1087,1090,1092,1095,1097,1100,1102,1104,1107,1109,1111,1113],{"class":716,"line":789},[714,1071,698],{"class":728},[714,1073,647],{"class":724},[714,1075,947],{"class":762},[714,1077,765],{"class":728},[714,1079,801],{"class":724},[714,1081,1082],{"class":804}," user",[714,1084,808],{"class":724},[714,1086,725],{"class":724},[714,1088,1089],{"class":804}," id",[714,1091,808],{"class":724},[714,1093,1094],{"class":839}," 1",[714,1096,776],{"class":724},[714,1098,1099],{"class":804}," plan",[714,1101,808],{"class":724},[714,1103,738],{"class":724},[714,1105,1106],{"class":741},"pro",[714,1108,768],{"class":724},[714,1110,732],{"class":724},[714,1112,732],{"class":724},[714,1114,786],{"class":728},[714,1116,1117,1119,1121,1123],{"class":716,"line":984},[714,1118,698],{"class":728},[714,1120,647],{"class":724},[714,1122,991],{"class":762},[714,1124,994],{"class":728},[619,1126,1127,1129,1130,1132,1133,668,1136,1139,1140,647],{},[661,1128,855],{}," is a thin wrapper around ",[661,1131,851],{}," that pre-populates ",[661,1134,1135],{},"method",[661,1137,1138],{},"path",", and ",[661,1141,1142],{},"requestId",[692,1144,1146],{"id":1145},"request-logging-framework-middleware","Request Logging (framework middleware)",[619,1148,1149,1150,1153],{},"Framework integrations create a wide event logger automatically on each request. ",[661,1151,1152],{},"useLogger(event)"," retrieves the logger that's already attached to the request context:",[1155,1156,1157,1318,1476,1629,1774],"framework-tabs",{},[704,1158,1161],{"className":706,"code":1159,"filename":250,"language":709,"meta":1160,"style":710},"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",[661,1162,1163,1182,1186,1217,1235,1239,1283,1303,1310],{"__ignoreMap":710},[714,1164,1165,1167,1169,1172,1174,1176,1178,1180],{"class":716,"line":717},[714,1166,721],{"class":720},[714,1168,725],{"class":724},[714,1170,1171],{"class":728}," useLogger",[714,1173,732],{"class":724},[714,1175,735],{"class":720},[714,1177,738],{"class":724},[714,1179,742],{"class":741},[714,1181,745],{"class":724},[714,1183,1184],{"class":716,"line":748},[714,1185,752],{"emptyLinePlaceholder":751},[714,1187,1188,1191,1194,1197,1199,1202,1205,1209,1211,1214],{"class":716,"line":755},[714,1189,1190],{"class":720},"export",[714,1192,1193],{"class":720}," default",[714,1195,1196],{"class":762}," defineEventHandler",[714,1198,765],{"class":728},[714,1200,1201],{"class":895},"async",[714,1203,1204],{"class":724}," (",[714,1206,1208],{"class":1207},"sHdIc","event",[714,1210,699],{"class":724},[714,1212,1213],{"class":895}," =>",[714,1215,1216],{"class":724}," {\n",[714,1218,1219,1222,1224,1227,1229,1231,1233],{"class":716,"line":789},[714,1220,1221],{"class":895},"  const",[714,1223,729],{"class":728},[714,1225,1226],{"class":724}," =",[714,1228,1171],{"class":762},[714,1230,765],{"class":804},[714,1232,1208],{"class":728},[714,1234,786],{"class":804},[714,1236,1237],{"class":716,"line":984},[714,1238,752],{"emptyLinePlaceholder":751},[714,1240,1242,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281],{"class":716,"line":1241},6,[714,1243,1244],{"class":728},"  log",[714,1246,647],{"class":724},[714,1248,947],{"class":762},[714,1250,765],{"class":804},[714,1252,801],{"class":724},[714,1254,1082],{"class":804},[714,1256,808],{"class":724},[714,1258,725],{"class":724},[714,1260,1089],{"class":804},[714,1262,808],{"class":724},[714,1264,1094],{"class":839},[714,1266,776],{"class":724},[714,1268,1099],{"class":804},[714,1270,808],{"class":724},[714,1272,738],{"class":724},[714,1274,1106],{"class":741},[714,1276,768],{"class":724},[714,1278,732],{"class":724},[714,1280,732],{"class":724},[714,1282,786],{"class":804},[714,1284,1286,1289,1291,1294,1296,1300],{"class":716,"line":1285},7,[714,1287,1288],{"class":720},"  return",[714,1290,725],{"class":724},[714,1292,1293],{"class":804}," success",[714,1295,808],{"class":724},[714,1297,1299],{"class":1298},"sfNiH"," true",[714,1301,1302],{"class":724}," }\n",[714,1304,1306],{"class":716,"line":1305},8,[714,1307,1309],{"class":1308},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[714,1311,1313,1316],{"class":716,"line":1312},9,[714,1314,1315],{"class":724},"}",[714,1317,786],{"class":728},[704,1319,1322],{"className":706,"code":1320,"filename":265,"language":709,"meta":1321,"style":710},"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",[661,1323,1324,1344,1363,1367,1389,1405,1409,1451,1465,1469],{"__ignoreMap":710},[714,1325,1326,1328,1330,1333,1335,1337,1339,1342],{"class":716,"line":717},[714,1327,721],{"class":720},[714,1329,725],{"class":724},[714,1331,1332],{"class":728}," defineHandler",[714,1334,732],{"class":724},[714,1336,735],{"class":720},[714,1338,738],{"class":724},[714,1340,1341],{"class":741},"nitro\u002Fh3",[714,1343,745],{"class":724},[714,1345,1346,1348,1350,1352,1354,1356,1358,1361],{"class":716,"line":748},[714,1347,721],{"class":720},[714,1349,725],{"class":724},[714,1351,1171],{"class":728},[714,1353,732],{"class":724},[714,1355,735],{"class":720},[714,1357,738],{"class":724},[714,1359,1360],{"class":741},"evlog\u002Fnitro\u002Fv3",[714,1362,745],{"class":724},[714,1364,1365],{"class":716,"line":755},[714,1366,752],{"emptyLinePlaceholder":751},[714,1368,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387],{"class":716,"line":789},[714,1370,1190],{"class":720},[714,1372,1193],{"class":720},[714,1374,1332],{"class":762},[714,1376,765],{"class":728},[714,1378,1201],{"class":895},[714,1380,1204],{"class":724},[714,1382,1208],{"class":1207},[714,1384,699],{"class":724},[714,1386,1213],{"class":895},[714,1388,1216],{"class":724},[714,1390,1391,1393,1395,1397,1399,1401,1403],{"class":716,"line":984},[714,1392,1221],{"class":895},[714,1394,729],{"class":728},[714,1396,1226],{"class":724},[714,1398,1171],{"class":762},[714,1400,765],{"class":804},[714,1402,1208],{"class":728},[714,1404,786],{"class":804},[714,1406,1407],{"class":716,"line":1241},[714,1408,752],{"emptyLinePlaceholder":751},[714,1410,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449],{"class":716,"line":1285},[714,1412,1244],{"class":728},[714,1414,647],{"class":724},[714,1416,947],{"class":762},[714,1418,765],{"class":804},[714,1420,801],{"class":724},[714,1422,1082],{"class":804},[714,1424,808],{"class":724},[714,1426,725],{"class":724},[714,1428,1089],{"class":804},[714,1430,808],{"class":724},[714,1432,1094],{"class":839},[714,1434,776],{"class":724},[714,1436,1099],{"class":804},[714,1438,808],{"class":724},[714,1440,738],{"class":724},[714,1442,1106],{"class":741},[714,1444,768],{"class":724},[714,1446,732],{"class":724},[714,1448,732],{"class":724},[714,1450,786],{"class":804},[714,1452,1453,1455,1457,1459,1461,1463],{"class":716,"line":1305},[714,1454,1288],{"class":720},[714,1456,725],{"class":724},[714,1458,1293],{"class":804},[714,1460,808],{"class":724},[714,1462,1299],{"class":1298},[714,1464,1302],{"class":724},[714,1466,1467],{"class":716,"line":1312},[714,1468,1309],{"class":1308},[714,1470,1472,1474],{"class":716,"line":1471},10,[714,1473,1315],{"class":724},[714,1475,786],{"class":728},[704,1477,1480],{"className":706,"code":1478,"filename":255,"language":709,"meta":1479,"style":710},"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",[661,1481,1482,1506,1510,1535,1547,1551,1593,1619,1623],{"__ignoreMap":710},[714,1483,1484,1486,1488,1491,1493,1495,1497,1499,1501,1504],{"class":716,"line":717},[714,1485,721],{"class":720},[714,1487,725],{"class":724},[714,1489,1490],{"class":728}," withEvlog",[714,1492,776],{"class":724},[714,1494,1171],{"class":728},[714,1496,732],{"class":724},[714,1498,735],{"class":720},[714,1500,738],{"class":724},[714,1502,1503],{"class":741},"@\u002Flib\u002Fevlog",[714,1505,745],{"class":724},[714,1507,1508],{"class":716,"line":748},[714,1509,752],{"emptyLinePlaceholder":751},[714,1511,1512,1514,1517,1520,1522,1524,1526,1528,1531,1533],{"class":716,"line":755},[714,1513,1190],{"class":720},[714,1515,1516],{"class":895}," const",[714,1518,1519],{"class":728}," POST ",[714,1521,902],{"class":724},[714,1523,1490],{"class":762},[714,1525,765],{"class":728},[714,1527,1201],{"class":895},[714,1529,1530],{"class":724}," ()",[714,1532,1213],{"class":895},[714,1534,1216],{"class":724},[714,1536,1537,1539,1541,1543,1545],{"class":716,"line":789},[714,1538,1221],{"class":895},[714,1540,729],{"class":728},[714,1542,1226],{"class":724},[714,1544,1171],{"class":762},[714,1546,994],{"class":804},[714,1548,1549],{"class":716,"line":984},[714,1550,752],{"emptyLinePlaceholder":751},[714,1552,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591],{"class":716,"line":1241},[714,1554,1244],{"class":728},[714,1556,647],{"class":724},[714,1558,947],{"class":762},[714,1560,765],{"class":804},[714,1562,801],{"class":724},[714,1564,1082],{"class":804},[714,1566,808],{"class":724},[714,1568,725],{"class":724},[714,1570,1089],{"class":804},[714,1572,808],{"class":724},[714,1574,1094],{"class":839},[714,1576,776],{"class":724},[714,1578,1099],{"class":804},[714,1580,808],{"class":724},[714,1582,738],{"class":724},[714,1584,1106],{"class":741},[714,1586,768],{"class":724},[714,1588,732],{"class":724},[714,1590,732],{"class":724},[714,1592,786],{"class":804},[714,1594,1595,1597,1600,1602,1605,1607,1609,1611,1613,1615,1617],{"class":716,"line":1285},[714,1596,1288],{"class":720},[714,1598,1599],{"class":728}," Response",[714,1601,647],{"class":724},[714,1603,1604],{"class":762},"json",[714,1606,765],{"class":804},[714,1608,801],{"class":724},[714,1610,1293],{"class":804},[714,1612,808],{"class":724},[714,1614,1299],{"class":1298},[714,1616,732],{"class":724},[714,1618,786],{"class":804},[714,1620,1621],{"class":716,"line":1305},[714,1622,1309],{"class":1308},[714,1624,1625,1627],{"class":716,"line":1312},[714,1626,1315],{"class":724},[714,1628,786],{"class":728},[704,1630,1632],{"className":706,"code":1631,"filename":285,"language":709,"meta":708,"style":710},"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",[661,1633,1634,1668,1694,1698,1740,1764,1768],{"__ignoreMap":710},[714,1635,1636,1639,1641,1644,1646,1648,1650,1652,1654,1657,1659,1662,1664,1666],{"class":716,"line":717},[714,1637,1638],{"class":728},"app",[714,1640,647],{"class":724},[714,1642,1643],{"class":762},"post",[714,1645,765],{"class":728},[714,1647,768],{"class":724},[714,1649,1061],{"class":741},[714,1651,768],{"class":724},[714,1653,776],{"class":724},[714,1655,1656],{"class":895}," async",[714,1658,1204],{"class":724},[714,1660,1661],{"class":1207},"c",[714,1663,699],{"class":724},[714,1665,1213],{"class":895},[714,1667,1216],{"class":724},[714,1669,1670,1672,1674,1676,1679,1681,1684,1686,1688,1690,1692],{"class":716,"line":748},[714,1671,1221],{"class":895},[714,1673,729],{"class":728},[714,1675,1226],{"class":724},[714,1677,1678],{"class":728}," c",[714,1680,647],{"class":724},[714,1682,1683],{"class":762},"get",[714,1685,765],{"class":804},[714,1687,768],{"class":724},[714,1689,698],{"class":741},[714,1691,768],{"class":724},[714,1693,786],{"class":804},[714,1695,1696],{"class":716,"line":755},[714,1697,752],{"emptyLinePlaceholder":751},[714,1699,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738],{"class":716,"line":789},[714,1701,1244],{"class":728},[714,1703,647],{"class":724},[714,1705,947],{"class":762},[714,1707,765],{"class":804},[714,1709,801],{"class":724},[714,1711,1082],{"class":804},[714,1713,808],{"class":724},[714,1715,725],{"class":724},[714,1717,1089],{"class":804},[714,1719,808],{"class":724},[714,1721,1094],{"class":839},[714,1723,776],{"class":724},[714,1725,1099],{"class":804},[714,1727,808],{"class":724},[714,1729,738],{"class":724},[714,1731,1106],{"class":741},[714,1733,768],{"class":724},[714,1735,732],{"class":724},[714,1737,732],{"class":724},[714,1739,786],{"class":804},[714,1741,1742,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762],{"class":716,"line":984},[714,1743,1288],{"class":720},[714,1745,1678],{"class":728},[714,1747,647],{"class":724},[714,1749,1604],{"class":762},[714,1751,765],{"class":804},[714,1753,801],{"class":724},[714,1755,1293],{"class":804},[714,1757,808],{"class":724},[714,1759,1299],{"class":1298},[714,1761,732],{"class":724},[714,1763,786],{"class":804},[714,1765,1766],{"class":716,"line":1241},[714,1767,1309],{"class":1308},[714,1769,1770,1772],{"class":716,"line":1285},[714,1771,1315],{"class":724},[714,1773,786],{"class":728},[704,1775,1777],{"className":706,"code":1776,"filename":280,"language":709,"meta":708,"style":710},"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",[661,1778,1779,1815,1831,1835,1877,1901,1905],{"__ignoreMap":710},[714,1780,1781,1783,1785,1787,1789,1791,1793,1795,1797,1799,1801,1804,1806,1809,1811,1813],{"class":716,"line":717},[714,1782,1638],{"class":728},[714,1784,647],{"class":724},[714,1786,1643],{"class":762},[714,1788,765],{"class":728},[714,1790,768],{"class":724},[714,1792,1061],{"class":741},[714,1794,768],{"class":724},[714,1796,776],{"class":724},[714,1798,1656],{"class":895},[714,1800,1204],{"class":724},[714,1802,1803],{"class":1207},"req",[714,1805,776],{"class":724},[714,1807,1808],{"class":1207}," res",[714,1810,699],{"class":724},[714,1812,1213],{"class":895},[714,1814,1216],{"class":724},[714,1816,1817,1819,1821,1823,1826,1828],{"class":716,"line":748},[714,1818,1221],{"class":895},[714,1820,729],{"class":728},[714,1822,1226],{"class":724},[714,1824,1825],{"class":728}," req",[714,1827,647],{"class":724},[714,1829,1830],{"class":728},"log\n",[714,1832,1833],{"class":716,"line":755},[714,1834,752],{"emptyLinePlaceholder":751},[714,1836,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875],{"class":716,"line":789},[714,1838,1244],{"class":728},[714,1840,647],{"class":724},[714,1842,947],{"class":762},[714,1844,765],{"class":804},[714,1846,801],{"class":724},[714,1848,1082],{"class":804},[714,1850,808],{"class":724},[714,1852,725],{"class":724},[714,1854,1089],{"class":804},[714,1856,808],{"class":724},[714,1858,1094],{"class":839},[714,1860,776],{"class":724},[714,1862,1099],{"class":804},[714,1864,808],{"class":724},[714,1866,738],{"class":724},[714,1868,1106],{"class":741},[714,1870,768],{"class":724},[714,1872,732],{"class":724},[714,1874,732],{"class":724},[714,1876,786],{"class":804},[714,1878,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899],{"class":716,"line":984},[714,1880,1288],{"class":720},[714,1882,1808],{"class":728},[714,1884,647],{"class":724},[714,1886,1604],{"class":762},[714,1888,765],{"class":804},[714,1890,801],{"class":724},[714,1892,1293],{"class":804},[714,1894,808],{"class":724},[714,1896,1299],{"class":1298},[714,1898,732],{"class":724},[714,1900,786],{"class":804},[714,1902,1903],{"class":716,"line":1241},[714,1904,1309],{"class":1308},[714,1906,1907,1909],{"class":716,"line":1285},[714,1908,1315],{"class":724},[714,1910,786],{"class":728},[631,1912,1913,1915,1916,668,1919,668,1922,1925,1926,1928],{"color":633,"icon":13},[661,1914,1152],{}," doesn't create a logger, it retrieves the one the framework middleware already attached to the event. Each framework has its own way to access it (",[661,1917,1918],{},"useLogger",[661,1920,1921],{},"req.log",[661,1923,1924],{},"c.get('log')",", etc.). In Nuxt, ",[661,1927,1918],{}," is auto-imported.",[649,1930,1932],{"id":1931},"choose-the-mode-for-the-job","Choose the mode for the job",[1934,1935,1936,1958],"table",{},[1937,1938,1939],"thead",{},[1940,1941,1942,1945,1949,1955],"tr",{},[1943,1944],"th",{},[1943,1946,1947],{},[661,1948,698],{},[1943,1950,1951,852,1953],{},[661,1952,851],{},[661,1954,855],{},[1943,1956,1957],{},"Framework middleware",[1959,1960,1961,1978,1998,2017,2032],"tbody",{},[1940,1962,1963,1969,1972,1975],{},[1964,1965,1966],"td",{},[623,1967,1968],{},"Use case",[1964,1970,1971],{},"Quick one-off events",[1964,1973,1974],{},"Scripts, jobs, workers, queues, HTTP without a framework",[1964,1976,1977],{},"API routes with a framework integration",[1940,1979,1980,1985,1988,1994],{},[1964,1981,1982],{},[623,1983,1984],{},"Context",[1964,1986,1987],{},"Single call",[1964,1989,1990,1991],{},"Accumulate with ",[661,1992,1993],{},"set()",[1964,1995,1990,1996],{},[661,1997,1993],{},[1940,1999,2000,2005,2008,2014],{},[1964,2001,2002],{},[623,2003,2004],{},"Emit",[1964,2006,2007],{},"Immediate",[1964,2009,2010,2011],{},"Manual ",[661,2012,2013],{},"emit()",[1964,2015,2016],{},"Automatic on response end",[1940,2018,2019,2023,2026,2029],{},[1964,2020,2021],{},[623,2022,61],{},[1964,2024,2025],{},"None",[1964,2027,2028],{},"You manage it",[1964,2030,2031],{},"Framework manages it",[1940,2033,2034,2039,2042,2044],{},[1964,2035,2036],{},[623,2037,2038],{},"Output",[1964,2040,2041],{},"Console + drain",[1964,2043,2041],{},[1964,2045,2046],{},"Console + drain + enrich",[692,2048,2050],{"id":2049},"by-context","By context",[1934,2052,2053,2065],{},[1937,2054,2055],{},[1940,2056,2057,2059,2062],{},[1943,2058,1984],{},[1943,2060,2061],{},"Best fit",[1943,2063,2064],{},"Why",[1959,2066,2067,2085,2100,2121,2142,2160,2184,2202,2218,2238,2253],{},[1940,2068,2069,2074,2082],{},[1964,2070,2071],{},[623,2072,2073],{},"HTTP route in Nuxt \u002F Next \u002F Hono \u002F Express \u002F …",[1964,2075,2076,2078,2079],{},[661,2077,1152],{}," via ",[641,2080,2081],{"href":246},"framework integration",[1964,2083,2084],{},"One wide event per request, auto-emitted on response end",[1940,2086,2087,2092,2097],{},[1964,2088,2089],{},[623,2090,2091],{},"HTTP handler without a framework",[1964,2093,2094],{},[661,2095,2096],{},"createRequestLogger({ method, path })",[1964,2098,2099],{},"Same shape as framework middleware, manual emit",[1940,2101,2102,2107,2118],{},[1964,2103,2104],{},[623,2105,2106],{},"CLI tool \u002F one-shot script",[1964,2108,2109,2112,2113,2115,2116],{},[661,2110,2111],{},"log.*"," for steps + ",[661,2114,851],{}," for the run summary — see ",[641,2117,310],{"href":311},[1964,2119,2120],{},"Pretty in dev, structured in CI, one summary event for the whole run",[1940,2122,2123,2128,2139],{},[1964,2124,2125],{},[623,2126,2127],{},"Published library",[1964,2129,2130,2132,2133,2136,2137],{},[661,2131,851],{}," only — never ",[661,2134,2135],{},"initLogger"," — see ",[641,2138,310],{"href":311},[1964,2140,2141],{},"Don't pollute the host app's global config or force a drain on consumers",[1940,2143,2144,2149,2157],{},[1964,2145,2146],{},[623,2147,2148],{},"Background job \u002F queue worker \u002F cron",[1964,2150,2151,2154,2155],{},[661,2152,2153],{},"createLogger({ jobId, queue })"," per invocation — see ",[641,2156,310],{"href":311},[1964,2158,2159],{},"One wide event per job run, perfect for retry analysis",[1940,2161,2162,2167,2177],{},[1964,2163,2164],{},[623,2165,2166],{},"Cloudflare Worker \u002F edge function",[1964,2168,2169,2172,2173,2136,2175],{},[661,2170,2171],{},"createWorkersLogger(req)"," or ",[661,2174,855],{},[641,2176,305],{"href":306},[1964,2178,2179,2180,2183],{},"Per-request event, no ",[661,2181,2182],{},"process"," globals required",[1940,2185,2186,2190,2199],{},[1964,2187,2188],{},[623,2189,324],{},[1964,2191,2192,2194,2195,2154,2197],{},[661,2193,2135],{}," once + ",[661,2196,851],{},[641,2198,324],{"href":325},[1964,2200,2201],{},"Cold-start init, per-event scope, drain flush in the handler",[1940,2203,2204,2209,2215],{},[1964,2205,2206],{},[623,2207,2208],{},"Batch \u002F pipeline step",[1964,2210,2211,2214],{},[661,2212,2213],{},"createLogger({ step })"," per stage",[1964,2216,2217],{},"One event per stage with inputs and outputs side by side",[1940,2219,2220,2225,2235],{},[1964,2221,2222],{},[623,2223,2224],{},"AI agent \u002F LLM call",[1964,2226,2227,2229,2230],{},[661,2228,851],{}," + ",[641,2231,2232],{"href":348},[661,2233,2234],{},"createAILogger",[1964,2236,2237],{},"Token usage, tool calls, streaming metrics on the same wide event",[1940,2239,2240,2245,2250],{},[1964,2241,2242],{},[623,2243,2244],{},"Library function called inside a request",[1964,2246,2247,2249],{},[661,2248,1152],{}," from caller, or accept a logger as argument",[1964,2251,2252],{},"Inherit the parent's request context, contribute to the same wide event",[1940,2254,2255,2260,2265],{},[1964,2256,2257],{},[623,2258,2259],{},"Shared workspace package",[1964,2261,2262,2263],{},"Treat it like a library — see ",[641,2264,310],{"href":311},[1964,2266,2267,2268,2270,2271,2273],{},"Host app owns ",[661,2269,2135],{}," \u002F drain; packages use ",[661,2272,851],{}," or accept a logger",[631,2275,2276,2277,644,2279,2281],{"color":633,"icon":488},"None of these is an \"upgrade\" of another. Use ",[661,2278,698],{},[661,2280,851],{}," in the same file when it makes sense, since they share the global drain, redaction, and types.",[649,2283,2285],{"id":2284},"what-all-three-share","What all three share",[619,2287,2288],{},"All three modes share the same foundation:",[2290,2291,2292,2303,2311,2333,2338,2344],"ul",{},[2293,2294,2295,2298,2299,2302],"li",{},[623,2296,2297],{},"Pretty output"," in development, ",[623,2300,2301],{},"JSON"," in production (default, no configuration needed)",[2293,2304,2305,2307,2308],{},[623,2306,544],{}," to send events to Axiom, Sentry, PostHog, and more. See ",[641,2309,2310],{"href":163},"Integrate \u002F Adapters",[2293,2312,2313,2316,2317,668,2320,1139,2323,2326,2327,2332],{},[623,2314,2315],{},"Structured errors"," with ",[661,2318,2319],{},"why",[661,2321,2322],{},"fix",[661,2324,2325],{},"link",", plus optional backend-only ",[623,2328,2329],{},[661,2330,2331],{},"internal"," for logs",[2293,2334,2335,2337],{},[623,2336,66],{}," (head + tail) to control log volume in production",[2293,2339,2340,2343],{},[623,2341,2342],{},"Redaction"," that wipes secrets before they ever leave the process",[2293,2345,2346,2349],{},[623,2347,2348],{},"Zero dependencies",", ~6 kB gzip",[649,2351,2353],{"id":2352},"where-to-go-from-here","Where to go from here",[619,2355,2356],{},"After the three modes, the rest of Learn covers the concepts that show up across every mode:",[2290,2358,2359,2380,2385,2393,2398,2411],{},[2293,2360,2361,2363,2364,668,2366,668,2368,668,2370,2372,2373,2376,2377],{},[641,2362,56],{"href":57},": ",[661,2365,2319],{},[661,2367,2322],{},[661,2369,2325],{},[661,2371,2331],{},", and how ",[661,2374,2375],{},"createError"," differs from ",[661,2378,2379],{},"throw new Error",[2293,2381,2382,2384],{},[641,2383,81],{"href":82},": typed error \u002F audit catalogs that survive refactors",[2293,2386,2387,2389,2390,2392],{},[641,2388,61],{"href":62},": exactly what happens between ",[661,2391,2013],{}," and your drain",[2293,2394,2395,2397],{},[641,2396,66],{"href":67},": keep all errors and slow requests; drop healthy noise",[2293,2399,2400,2402,2403,2406,2407,2410],{},[641,2401,76],{"href":77},": augment ",[661,2404,2405],{},"RequestLogger"," so ",[661,2408,2409],{},"log.set"," is autocompleted",[2293,2412,2413,2415,2416,668,2419,668,2422,2425],{},[641,2414,2342],{"href":72},": the rules that strip ",[661,2417,2418],{},"authorization",[661,2420,2421],{},"password",[661,2423,2424],{},"token",", etc. before drain",[619,2427,2428,2429,2431,2432,2437],{},"When you're done with Learn, head to ",[641,2430,149],{"href":246}," to wire evlog into your stack, or run ",[641,2433,2434],{"href":110},[661,2435,2436],{},"evlog map"," first to find missing evlog patterns in supported entry points.",[2439,2440,2441],"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}",{"title":710,"searchDepth":748,"depth":748,"links":2443},[2444,2445,2452,2455,2456],{"id":651,"depth":748,"text":652},{"id":689,"depth":748,"text":690,"children":2446},[2447,2449,2451],{"id":694,"depth":755,"text":2448},"Simple Logging (log)",{"id":847,"depth":755,"text":2450},"Wide Events (createLogger \u002F createRequestLogger)",{"id":1145,"depth":755,"text":1146},{"id":1931,"depth":748,"text":1932,"children":2453},[2454],{"id":2049,"depth":755,"text":2050},{"id":2284,"depth":748,"text":2285},{"id":2352,"depth":748,"text":2353},"The mental model: three logging modes, the wide event lifecycle, sampling, typed fields, and redaction. Read it in order if you are new.","md",[2460,2462,2463],{"label":46,"icon":49,"to":47,"color":637,"variant":2461},"subtle",{"label":51,"icon":54,"to":52,"color":637,"variant":2461},{"label":61,"icon":64,"to":62,"color":637,"variant":2461},{},{"title":41,"icon":44},{"title":614,"description":2457},"JBSSEYSSjdAKnMBxsvyzmAX02TCMSR5CGPyeZ0XFX14",[2469,2471],{"title":30,"path":31,"stem":32,"description":2470,"icon":33,"children":-1},"Choose a TypeScript logging library around the way you debug. See where evlog fits, what to keep from your current setup, and how to try it.",{"title":46,"path":47,"stem":48,"description":2472,"icon":49,"children":-1},"Use evlog for individual structured messages, with the same drains and redaction as wide events, and adapt existing logger call sites.",1791636506408]