[{"data":1,"prerenderedAt":1837},["ShallowReactive",2],{"navigation_docs":3,"-learn-overview":576,"-learn-overview-surround":1832},[4,35,85,138,318,453,512,551],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133],{"title":41,"path":91,"stem":92,"icon":49},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":94,"path":95,"stem":96,"icon":97},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":99,"path":100,"stem":101,"icon":102},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":104,"path":105,"stem":106,"icon":107},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":109,"path":110,"stem":111,"icon":112},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":114,"path":115,"stem":116,"icon":117},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":119,"path":120,"stem":121,"icon":122},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":124,"path":125,"stem":126,"icon":127},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":129,"path":130,"stem":131,"icon":132},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":134,"path":135,"stem":136,"icon":137},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":139,"path":140,"stem":141,"children":142,"page":34},"Integrate","\u002Fintegrate","4.integrate",[143,147,230],{"title":41,"path":144,"stem":145,"icon":146},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":148,"path":149,"stem":150,"children":151,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[152,155,185,210],{"title":41,"path":153,"stem":154,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":156,"path":157,"stem":158,"children":159,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[160,165,170,175,180],{"title":161,"path":162,"stem":163,"icon":164},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":166,"path":167,"stem":168,"icon":169},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":171,"path":172,"stem":173,"icon":174},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":176,"path":177,"stem":178,"icon":179},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":181,"path":182,"stem":183,"icon":184},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":186,"path":187,"stem":188,"children":189,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[190,195,200,205],{"title":191,"path":192,"stem":193,"icon":194},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":196,"path":197,"stem":198,"icon":199},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":201,"path":202,"stem":203,"icon":204},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":206,"path":207,"stem":208,"icon":209},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":211,"path":212,"stem":213,"children":214,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[215,220,225],{"title":216,"path":217,"stem":218,"icon":219},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":221,"path":222,"stem":223,"icon":224},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":226,"path":227,"stem":228,"icon":229},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":231,"path":232,"stem":233,"children":234,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[235,239,244,249,254,259,264,269,274,279,284,289,294,299,303,308,313],{"title":41,"path":236,"stem":237,"icon":238},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":240,"path":241,"stem":242,"icon":243},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":245,"path":246,"stem":247,"icon":248},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":250,"path":251,"stem":252,"icon":253},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":255,"path":256,"stem":257,"icon":258},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":260,"path":261,"stem":262,"icon":263},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":265,"path":266,"stem":267,"icon":268},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":270,"path":271,"stem":272,"icon":273},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":275,"path":276,"stem":277,"icon":278},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":280,"path":281,"stem":282,"icon":283},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":285,"path":286,"stem":287,"icon":288},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":290,"path":291,"stem":292,"icon":293},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":295,"path":296,"stem":297,"icon":298},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":300,"path":301,"stem":302,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":304,"path":305,"stem":306,"icon":307},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":309,"path":310,"stem":311,"icon":312},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":314,"path":315,"stem":316,"icon":317},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":319,"path":320,"stem":321,"children":322,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[323,326,331,359,386,418,439,444,449],{"title":41,"path":324,"stem":325,"icon":107},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":327,"path":328,"stem":329,"icon":330},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":332,"icon":333,"path":334,"stem":335,"children":336,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[337,340,345,350,355],{"title":41,"path":338,"stem":339,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":341,"path":342,"stem":343,"icon":344},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":346,"path":347,"stem":348,"icon":349},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":351,"path":352,"stem":353,"icon":354},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":356,"path":357,"stem":358,"icon":137},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":360,"icon":361,"path":362,"stem":363,"children":364,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[365,368,373,378,382],{"title":41,"path":366,"stem":367,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":369,"path":370,"stem":371,"icon":372},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":374,"path":375,"stem":376,"icon":377},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":379,"path":380,"stem":381,"icon":330},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":383,"path":384,"stem":385,"icon":112},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":387,"icon":388,"path":389,"stem":390,"children":391,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[392,395,400,405,410,414],{"title":41,"path":393,"stem":394,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":396,"path":397,"stem":398,"icon":399},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":401,"path":402,"stem":403,"icon":404},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":406,"path":407,"stem":408,"icon":409},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":411,"path":412,"stem":413,"icon":388},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":415,"path":416,"stem":417,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":356,"icon":112,"path":419,"stem":420,"children":421,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[422,425,430,435],{"title":41,"path":423,"stem":424,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":426,"path":427,"stem":428,"icon":429},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":431,"path":432,"stem":433,"icon":434},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":436,"path":437,"stem":438,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":440,"path":441,"stem":442,"icon":443},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":445,"path":446,"stem":447,"icon":448},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":450,"path":451,"stem":452,"icon":434},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":454,"path":455,"stem":456,"children":457,"page":34},"Extend","\u002Fextend","6.extend",[458,462,467,472,476,481,485,489,493,497,502,507],{"title":41,"path":459,"stem":460,"icon":461},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":463,"path":464,"stem":465,"icon":466},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":468,"path":469,"stem":470,"icon":471},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":473,"path":474,"stem":475,"icon":466},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":477,"path":478,"stem":479,"icon":480},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":415,"path":482,"stem":483,"icon":484},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":486,"path":487,"stem":488,"icon":461},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":490,"path":491,"stem":492,"icon":443},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":494,"path":495,"stem":496,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":498,"path":499,"stem":500,"icon":501},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":503,"path":504,"stem":505,"icon":506},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":508,"path":509,"stem":510,"icon":511},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":436,"path":513,"stem":514,"children":515,"page":34},"\u002Freference","7.reference",[516,520,525,528,533,537,542,546],{"title":41,"path":517,"stem":518,"icon":519},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":521,"path":522,"stem":523,"icon":524},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":383,"path":526,"stem":527,"icon":112},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":529,"path":530,"stem":531,"icon":532},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":534,"path":535,"stem":536,"icon":388},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":538,"path":539,"stem":540,"icon":541},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":543,"path":544,"stem":545,"icon":443},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":547,"path":548,"stem":549,"icon":550},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":552,"path":553,"stem":554,"children":555,"page":34},"Compare","\u002Fcompare","8.compare",[556,560,564,568,572],{"title":557,"path":558,"stem":559,"icon":541},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":561,"path":562,"stem":563,"icon":204},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":565,"path":566,"stem":567,"icon":541},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":569,"path":570,"stem":571,"icon":541},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":573,"path":574,"stem":575,"icon":541},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":577,"title":578,"body":579,"description":1821,"extension":1822,"links":1823,"meta":1828,"navigation":1829,"path":42,"seo":1830,"stem":43,"__hash__":1831},"docs\u002F2.learn\u002F0.overview.md","Learn evlog",{"type":580,"value":581,"toc":1806},"minimark",[582,591,594,599,612,617,651,655,664,667,809,820,823,1089,1107,1111,1118,1274,1292,1296,1410,1414,1637,1646,1650,1653,1714,1718,1721,1790,1802],[583,584,585,586,590],"p",{},"This section is the ",[587,588,589],"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.",[583,592,593],{},"If you're new, read it in order. If you've already shipped with evlog, jump to the page that matches your question.",[595,596,598],"callout",{"color":597,"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.",[595,600,603,604,608,609,611],{"color":601,"icon":602},"neutral","i-lucide-globe","Not running an HTTP framework? See ",[605,606,607],"a",{"href":301},"Standalone TypeScript"," and ",[605,610,295],{"href":296},".",[613,614,616],"h2",{"id":615},"the-three-logging-modes","The three logging modes",[618,619,620,643,646],"card-group",{},[621,622,623,624,628,629,632,633,632,636,632,639,642],"card",{"color":601,"icon":49,"title":46,"to":47},"A fully-featured general-purpose logger. Replaces ",[625,626,627],"code",{},"console.log",", consola, pino, or winston with ",[625,630,631],{},"log.info",", ",[625,634,635],{},"log.error",[625,637,638],{},"log.warn",[625,640,641],{},"log.debug",", with the same level filtering, drain pipeline, redaction, and pretty\u002FJSON output.",[621,644,645],{"color":601,"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.",[621,647,650],{"color":601,"icon":648,"title":649,"to":236},"i-lucide-git-branch","Request Logging","Auto-managed wide events scoped to HTTP requests. Framework middleware creates the logger and emits it for you.",[613,652,654],{"id":653},"compare-the-three-at-a-glance","Compare the three at a glance",[656,657,659,660,663],"h3",{"id":658},"simple-logging-log","Simple Logging (",[625,661,662],{},"log",")",[583,665,666],{},"One event per call. No accumulation, no lifecycle management.",[668,669,675],"pre",{"className":670,"code":671,"filename":672,"language":673,"meta":674,"style":674},"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","",[625,676,677,710,717,751],{"__ignoreMap":674},[678,679,682,686,690,694,697,700,703,707],"span",{"class":680,"line":681},"line",1,[678,683,685],{"class":684},"s7zQu","import",[678,687,689],{"class":688},"sMK4o"," {",[678,691,693],{"class":692},"sTEyZ"," log",[678,695,696],{"class":688}," }",[678,698,699],{"class":684}," from",[678,701,702],{"class":688}," '",[678,704,706],{"class":705},"sfazB","evlog",[678,708,709],{"class":688},"'\n",[678,711,713],{"class":680,"line":712},2,[678,714,716],{"emptyLinePlaceholder":715},true,"\n",[678,718,720,722,724,727,730,733,736,738,741,743,746,748],{"class":680,"line":719},3,[678,721,662],{"class":692},[678,723,611],{"class":688},[678,725,597],{"class":726},"s2Zo4",[678,728,729],{"class":692},"(",[678,731,732],{"class":688},"'",[678,734,735],{"class":705},"auth",[678,737,732],{"class":688},[678,739,740],{"class":688},",",[678,742,702],{"class":688},[678,744,745],{"class":705},"User logged in",[678,747,732],{"class":688},[678,749,750],{"class":692},")\n",[678,752,754,756,758,761,763,766,770,773,775,778,780,782,785,787,789,792,794,796,799,801,805,807],{"class":680,"line":753},4,[678,755,662],{"class":692},[678,757,611],{"class":688},[678,759,760],{"class":726},"error",[678,762,729],{"class":692},[678,764,765],{"class":688},"{",[678,767,769],{"class":768},"swJcz"," action",[678,771,772],{"class":688},":",[678,774,702],{"class":688},[678,776,777],{"class":705},"payment",[678,779,732],{"class":688},[678,781,740],{"class":688},[678,783,784],{"class":768}," error",[678,786,772],{"class":688},[678,788,702],{"class":688},[678,790,791],{"class":705},"card_declined",[678,793,732],{"class":688},[678,795,740],{"class":688},[678,797,798],{"class":768}," userId",[678,800,772],{"class":688},[678,802,804],{"class":803},"sbssI"," 42",[678,806,696],{"class":688},[678,808,750],{"class":692},[656,810,812,813,816,817,663],{"id":811},"wide-events-createlogger-createrequestlogger","Wide Events (",[625,814,815],{},"createLogger"," \u002F ",[625,818,819],{},"createRequestLogger",[583,821,822],{},"One event per unit of work. Accumulate context progressively, emit when done.",[824,825,826,959],"code-group",{},[668,827,830],{"className":670,"code":828,"filename":829,"language":673,"meta":674,"style":674},"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",[625,831,832,851,855,903,946],{"__ignoreMap":674},[678,833,834,836,838,841,843,845,847,849],{"class":680,"line":681},[678,835,685],{"class":684},[678,837,689],{"class":688},[678,839,840],{"class":692}," createLogger",[678,842,696],{"class":688},[678,844,699],{"class":684},[678,846,702],{"class":688},[678,848,706],{"class":705},[678,850,709],{"class":688},[678,852,853],{"class":680,"line":712},[678,854,716],{"emptyLinePlaceholder":715},[678,856,857,861,864,867,869,871,873,876,878,880,883,885,887,890,892,894,897,899,901],{"class":680,"line":719},[678,858,860],{"class":859},"spNyl","const",[678,862,863],{"class":692}," log ",[678,865,866],{"class":688},"=",[678,868,840],{"class":726},[678,870,729],{"class":692},[678,872,765],{"class":688},[678,874,875],{"class":768}," jobId",[678,877,772],{"class":688},[678,879,702],{"class":688},[678,881,882],{"class":705},"sync-001",[678,884,732],{"class":688},[678,886,740],{"class":688},[678,888,889],{"class":768}," queue",[678,891,772],{"class":688},[678,893,702],{"class":688},[678,895,896],{"class":705},"emails",[678,898,732],{"class":688},[678,900,696],{"class":688},[678,902,750],{"class":692},[678,904,905,907,909,912,914,916,919,921,923,926,928,931,933,936,938,940,942,944],{"class":680,"line":753},[678,906,662],{"class":692},[678,908,611],{"class":688},[678,910,911],{"class":726},"set",[678,913,729],{"class":692},[678,915,765],{"class":688},[678,917,918],{"class":768}," batch",[678,920,772],{"class":688},[678,922,689],{"class":688},[678,924,925],{"class":768}," size",[678,927,772],{"class":688},[678,929,930],{"class":803}," 50",[678,932,740],{"class":688},[678,934,935],{"class":768}," processed",[678,937,772],{"class":688},[678,939,930],{"class":803},[678,941,696],{"class":688},[678,943,696],{"class":688},[678,945,750],{"class":692},[678,947,949,951,953,956],{"class":680,"line":948},5,[678,950,662],{"class":692},[678,952,611],{"class":688},[678,954,955],{"class":726},"emit",[678,957,958],{"class":692},"()\n",[668,960,963],{"className":670,"code":961,"filename":962,"language":673,"meta":674,"style":674},"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",[625,964,965,984,988,1032,1079],{"__ignoreMap":674},[678,966,967,969,971,974,976,978,980,982],{"class":680,"line":681},[678,968,685],{"class":684},[678,970,689],{"class":688},[678,972,973],{"class":692}," createRequestLogger",[678,975,696],{"class":688},[678,977,699],{"class":684},[678,979,702],{"class":688},[678,981,706],{"class":705},[678,983,709],{"class":688},[678,985,986],{"class":680,"line":712},[678,987,716],{"emptyLinePlaceholder":715},[678,989,990,992,994,996,998,1000,1002,1005,1007,1009,1012,1014,1016,1019,1021,1023,1026,1028,1030],{"class":680,"line":719},[678,991,860],{"class":859},[678,993,863],{"class":692},[678,995,866],{"class":688},[678,997,973],{"class":726},[678,999,729],{"class":692},[678,1001,765],{"class":688},[678,1003,1004],{"class":768}," method",[678,1006,772],{"class":688},[678,1008,702],{"class":688},[678,1010,1011],{"class":705},"POST",[678,1013,732],{"class":688},[678,1015,740],{"class":688},[678,1017,1018],{"class":768}," path",[678,1020,772],{"class":688},[678,1022,702],{"class":688},[678,1024,1025],{"class":705},"\u002Fapi\u002Fcheckout",[678,1027,732],{"class":688},[678,1029,696],{"class":688},[678,1031,750],{"class":692},[678,1033,1034,1036,1038,1040,1042,1044,1047,1049,1051,1054,1056,1059,1061,1064,1066,1068,1071,1073,1075,1077],{"class":680,"line":753},[678,1035,662],{"class":692},[678,1037,611],{"class":688},[678,1039,911],{"class":726},[678,1041,729],{"class":692},[678,1043,765],{"class":688},[678,1045,1046],{"class":768}," user",[678,1048,772],{"class":688},[678,1050,689],{"class":688},[678,1052,1053],{"class":768}," id",[678,1055,772],{"class":688},[678,1057,1058],{"class":803}," 1",[678,1060,740],{"class":688},[678,1062,1063],{"class":768}," plan",[678,1065,772],{"class":688},[678,1067,702],{"class":688},[678,1069,1070],{"class":705},"pro",[678,1072,732],{"class":688},[678,1074,696],{"class":688},[678,1076,696],{"class":688},[678,1078,750],{"class":692},[678,1080,1081,1083,1085,1087],{"class":680,"line":948},[678,1082,662],{"class":692},[678,1084,611],{"class":688},[678,1086,955],{"class":726},[678,1088,958],{"class":692},[583,1090,1091,1093,1094,1096,1097,632,1100,1103,1104,611],{},[625,1092,819],{}," is a thin wrapper around ",[625,1095,815],{}," that pre-populates ",[625,1098,1099],{},"method",[625,1101,1102],{},"path",", and ",[625,1105,1106],{},"requestId",[656,1108,1110],{"id":1109},"request-logging-framework-middleware","Request Logging (framework middleware)",[583,1112,1113,1114,1117],{},"Framework integrations create a wide event logger automatically on each request. ",[625,1115,1116],{},"useLogger(event)"," retrieves the logger that's already attached to the request context:",[668,1119,1122],{"className":670,"code":1120,"filename":1121,"language":673,"meta":674,"style":674},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\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",[625,1123,1124,1143,1147,1178,1196,1239,1259,1266],{"__ignoreMap":674},[678,1125,1126,1128,1130,1133,1135,1137,1139,1141],{"class":680,"line":681},[678,1127,685],{"class":684},[678,1129,689],{"class":688},[678,1131,1132],{"class":692}," useLogger",[678,1134,696],{"class":688},[678,1136,699],{"class":684},[678,1138,702],{"class":688},[678,1140,706],{"class":705},[678,1142,709],{"class":688},[678,1144,1145],{"class":680,"line":712},[678,1146,716],{"emptyLinePlaceholder":715},[678,1148,1149,1152,1155,1158,1160,1163,1166,1170,1172,1175],{"class":680,"line":719},[678,1150,1151],{"class":684},"export",[678,1153,1154],{"class":684}," default",[678,1156,1157],{"class":726}," defineEventHandler",[678,1159,729],{"class":692},[678,1161,1162],{"class":859},"async",[678,1164,1165],{"class":688}," (",[678,1167,1169],{"class":1168},"sHdIc","event",[678,1171,663],{"class":688},[678,1173,1174],{"class":859}," =>",[678,1176,1177],{"class":688}," {\n",[678,1179,1180,1183,1185,1188,1190,1192,1194],{"class":680,"line":753},[678,1181,1182],{"class":859},"  const",[678,1184,693],{"class":692},[678,1186,1187],{"class":688}," =",[678,1189,1132],{"class":726},[678,1191,729],{"class":768},[678,1193,1169],{"class":692},[678,1195,750],{"class":768},[678,1197,1198,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237],{"class":680,"line":948},[678,1199,1200],{"class":692},"  log",[678,1202,611],{"class":688},[678,1204,911],{"class":726},[678,1206,729],{"class":768},[678,1208,765],{"class":688},[678,1210,1046],{"class":768},[678,1212,772],{"class":688},[678,1214,689],{"class":688},[678,1216,1053],{"class":768},[678,1218,772],{"class":688},[678,1220,1058],{"class":803},[678,1222,740],{"class":688},[678,1224,1063],{"class":768},[678,1226,772],{"class":688},[678,1228,702],{"class":688},[678,1230,1070],{"class":705},[678,1232,732],{"class":688},[678,1234,696],{"class":688},[678,1236,696],{"class":688},[678,1238,750],{"class":768},[678,1240,1242,1245,1247,1250,1252,1256],{"class":680,"line":1241},6,[678,1243,1244],{"class":684},"  return",[678,1246,689],{"class":688},[678,1248,1249],{"class":768}," success",[678,1251,772],{"class":688},[678,1253,1255],{"class":1254},"sfNiH"," true",[678,1257,1258],{"class":688}," }\n",[678,1260,1262],{"class":680,"line":1261},7,[678,1263,1265],{"class":1264},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[678,1267,1269,1272],{"class":680,"line":1268},8,[678,1270,1271],{"class":688},"}",[678,1273,750],{"class":692},[595,1275,1276,1278,1279,632,1282,632,1285,1288,1289,1291],{"color":597,"icon":13},[625,1277,1116],{}," 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 (",[625,1280,1281],{},"useLogger",[625,1283,1284],{},"req.log",[625,1286,1287],{},"c.get('log')",", etc.). In Nuxt, ",[625,1290,1281],{}," is auto-imported.",[613,1293,1295],{"id":1294},"choose-the-mode-for-the-job","Choose the mode for the job",[1297,1298,1299,1321],"table",{},[1300,1301,1302],"thead",{},[1303,1304,1305,1308,1312,1318],"tr",{},[1306,1307],"th",{},[1306,1309,1310],{},[625,1311,662],{},[1306,1313,1314,816,1316],{},[625,1315,815],{},[625,1317,819],{},[1306,1319,1320],{},"Framework middleware",[1322,1323,1324,1341,1361,1380,1395],"tbody",{},[1303,1325,1326,1332,1335,1338],{},[1327,1328,1329],"td",{},[587,1330,1331],{},"Use case",[1327,1333,1334],{},"Quick one-off events",[1327,1336,1337],{},"Scripts, jobs, workers, queues, HTTP without a framework",[1327,1339,1340],{},"API routes with a framework integration",[1303,1342,1343,1348,1351,1357],{},[1327,1344,1345],{},[587,1346,1347],{},"Context",[1327,1349,1350],{},"Single call",[1327,1352,1353,1354],{},"Accumulate with ",[625,1355,1356],{},"set()",[1327,1358,1353,1359],{},[625,1360,1356],{},[1303,1362,1363,1368,1371,1377],{},[1327,1364,1365],{},[587,1366,1367],{},"Emit",[1327,1369,1370],{},"Immediate",[1327,1372,1373,1374],{},"Manual ",[625,1375,1376],{},"emit()",[1327,1378,1379],{},"Automatic on response end",[1303,1381,1382,1386,1389,1392],{},[1327,1383,1384],{},[587,1385,61],{},[1327,1387,1388],{},"None",[1327,1390,1391],{},"You manage it",[1327,1393,1394],{},"Framework manages it",[1303,1396,1397,1402,1405,1407],{},[1327,1398,1399],{},[587,1400,1401],{},"Output",[1327,1403,1404],{},"Console + drain",[1327,1406,1404],{},[1327,1408,1409],{},"Console + drain + enrich",[656,1411,1413],{"id":1412},"by-context","By context",[1297,1415,1416,1428],{},[1300,1417,1418],{},[1303,1419,1420,1422,1425],{},[1306,1421,1347],{},[1306,1423,1424],{},"Best fit",[1306,1426,1427],{},"Why",[1322,1429,1430,1448,1463,1484,1505,1523,1547,1565,1581,1601,1616],{},[1303,1431,1432,1437,1445],{},[1327,1433,1434],{},[587,1435,1436],{},"HTTP route in Nuxt \u002F Next \u002F Hono \u002F Express \u002F …",[1327,1438,1439,1441,1442],{},[625,1440,1116],{}," via ",[605,1443,1444],{"href":236},"framework integration",[1327,1446,1447],{},"One wide event per request, auto-emitted on response end",[1303,1449,1450,1455,1460],{},[1327,1451,1452],{},[587,1453,1454],{},"HTTP handler without a framework",[1327,1456,1457],{},[625,1458,1459],{},"createRequestLogger({ method, path })",[1327,1461,1462],{},"Same shape as framework middleware, manual emit",[1303,1464,1465,1470,1481],{},[1327,1466,1467],{},[587,1468,1469],{},"CLI tool \u002F one-shot script",[1327,1471,1472,1475,1476,1478,1479],{},[625,1473,1474],{},"log.*"," for steps + ",[625,1477,815],{}," for the run summary — see ",[605,1480,300],{"href":301},[1327,1482,1483],{},"Pretty in dev, structured in CI, one summary event for the whole run",[1303,1485,1486,1491,1502],{},[1327,1487,1488],{},[587,1489,1490],{},"Published library",[1327,1492,1493,1495,1496,1499,1500],{},[625,1494,815],{}," only — never ",[625,1497,1498],{},"initLogger"," — see ",[605,1501,300],{"href":301},[1327,1503,1504],{},"Don't pollute the host app's global config or force a drain on consumers",[1303,1506,1507,1512,1520],{},[1327,1508,1509],{},[587,1510,1511],{},"Background job \u002F queue worker \u002F cron",[1327,1513,1514,1517,1518],{},[625,1515,1516],{},"createLogger({ jobId, queue })"," per invocation — see ",[605,1519,300],{"href":301},[1327,1521,1522],{},"One wide event per job run, perfect for retry analysis",[1303,1524,1525,1530,1540],{},[1327,1526,1527],{},[587,1528,1529],{},"Cloudflare Worker \u002F edge function",[1327,1531,1532,1535,1536,1499,1538],{},[625,1533,1534],{},"createWorkersLogger(req)"," or ",[625,1537,819],{},[605,1539,295],{"href":296},[1327,1541,1542,1543,1546],{},"Per-request event, no ",[625,1544,1545],{},"process"," globals required",[1303,1548,1549,1553,1562],{},[1327,1550,1551],{},[587,1552,314],{},[1327,1554,1555,1557,1558,1517,1560],{},[625,1556,1498],{}," once + ",[625,1559,815],{},[605,1561,314],{"href":315},[1327,1563,1564],{},"Cold-start init, per-event scope, drain flush in the handler",[1303,1566,1567,1572,1578],{},[1327,1568,1569],{},[587,1570,1571],{},"Batch \u002F pipeline step",[1327,1573,1574,1577],{},[625,1575,1576],{},"createLogger({ step })"," per stage",[1327,1579,1580],{},"One event per stage with inputs and outputs side by side",[1303,1582,1583,1588,1598],{},[1327,1584,1585],{},[587,1586,1587],{},"AI agent \u002F LLM call",[1327,1589,1590,1592,1593],{},[625,1591,815],{}," + ",[605,1594,1595],{"href":338},[625,1596,1597],{},"createAILogger",[1327,1599,1600],{},"Token usage, tool calls, streaming metrics on the same wide event",[1303,1602,1603,1608,1613],{},[1327,1604,1605],{},[587,1606,1607],{},"Library function called inside a request",[1327,1609,1610,1612],{},[625,1611,1116],{}," from caller, or accept a logger as argument",[1327,1614,1615],{},"Inherit the parent's request context, contribute to the same wide event",[1303,1617,1618,1623,1628],{},[1327,1619,1620],{},[587,1621,1622],{},"Shared workspace package",[1327,1624,1625,1626],{},"Treat it like a library — see ",[605,1627,300],{"href":301},[1327,1629,1630,1631,1633,1634,1636],{},"Host app owns ",[625,1632,1498],{}," \u002F drain; packages use ",[625,1635,815],{}," or accept a logger",[595,1638,1640,1641,608,1643,1645],{"color":597,"icon":1639},"i-lucide-lightbulb","None of these is an \"upgrade\" of another. Use ",[625,1642,662],{},[625,1644,815],{}," in the same file when it makes sense, since they share the global drain, redaction, and types.",[613,1647,1649],{"id":1648},"what-all-three-share","What all three share",[583,1651,1652],{},"All three modes share the same foundation:",[1654,1655,1656,1667,1675,1697,1702,1708],"ul",{},[1657,1658,1659,1662,1663,1666],"li",{},[587,1660,1661],{},"Pretty output"," in development, ",[587,1664,1665],{},"JSON"," in production (default, no configuration needed)",[1657,1668,1669,1671,1672],{},[587,1670,508],{}," to send events to Axiom, Sentry, PostHog, and more. See ",[605,1673,1674],{"href":153},"Integrate \u002F Adapters",[1657,1676,1677,1680,1681,632,1684,1103,1687,1690,1691,1696],{},[587,1678,1679],{},"Structured errors"," with ",[625,1682,1683],{},"why",[625,1685,1686],{},"fix",[625,1688,1689],{},"link",", plus optional backend-only ",[587,1692,1693],{},[625,1694,1695],{},"internal"," for logs",[1657,1698,1699,1701],{},[587,1700,66],{}," (head + tail) to control log volume in production",[1657,1703,1704,1707],{},[587,1705,1706],{},"Redaction"," that wipes secrets before they ever leave the process",[1657,1709,1710,1713],{},[587,1711,1712],{},"Zero dependencies",", ~6 kB gzip",[613,1715,1717],{"id":1716},"where-to-go-from-here","Where to go from here",[583,1719,1720],{},"After the three modes, the rest of Learn covers the concepts that show up across every mode:",[1654,1722,1723,1744,1749,1757,1762,1775],{},[1657,1724,1725,1727,1728,632,1730,632,1732,632,1734,1736,1737,1740,1741],{},[605,1726,56],{"href":57},": ",[625,1729,1683],{},[625,1731,1686],{},[625,1733,1689],{},[625,1735,1695],{},", and how ",[625,1738,1739],{},"createError"," differs from ",[625,1742,1743],{},"throw new Error",[1657,1745,1746,1748],{},[605,1747,81],{"href":82},": typed error \u002F audit catalogs that survive refactors",[1657,1750,1751,1753,1754,1756],{},[605,1752,61],{"href":62},": exactly what happens between ",[625,1755,1376],{}," and your drain",[1657,1758,1759,1761],{},[605,1760,66],{"href":67},": keep all errors and slow requests; drop healthy noise",[1657,1763,1764,1766,1767,1770,1771,1774],{},[605,1765,76],{"href":77},": augment ",[625,1768,1769],{},"RequestLogger"," so ",[625,1772,1773],{},"log.set"," is autocompleted",[1657,1776,1777,1779,1780,632,1783,632,1786,1789],{},[605,1778,1706],{"href":72},": the rules that strip ",[625,1781,1782],{},"authorization",[625,1784,1785],{},"password",[625,1787,1788],{},"token",", etc. before drain",[583,1791,1792,1793,1795,1796,1801],{},"When you're done with Learn, head to ",[605,1794,139],{"href":236}," to wire evlog into your stack, or run ",[605,1797,1798],{"href":100},[625,1799,1800],{},"evlog map"," first to find missing evlog patterns in supported entry points.",[1803,1804,1805],"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":674,"searchDepth":712,"depth":712,"links":1807},[1808,1809,1816,1819,1820],{"id":615,"depth":712,"text":616},{"id":653,"depth":712,"text":654,"children":1810},[1811,1813,1815],{"id":658,"depth":719,"text":1812},"Simple Logging (log)",{"id":811,"depth":719,"text":1814},"Wide Events (createLogger \u002F createRequestLogger)",{"id":1109,"depth":719,"text":1110},{"id":1294,"depth":712,"text":1295,"children":1817},[1818],{"id":1412,"depth":719,"text":1413},{"id":1648,"depth":712,"text":1649},{"id":1716,"depth":712,"text":1717},"The mental model: three logging modes, the wide event lifecycle, sampling, typed fields, and redaction. Read it in order if you are new.","md",[1824,1826,1827],{"label":46,"icon":49,"to":47,"color":601,"variant":1825},"subtle",{"label":51,"icon":54,"to":52,"color":601,"variant":1825},{"label":61,"icon":64,"to":62,"color":601,"variant":1825},{},{"title":41,"icon":44},{"title":578,"description":1821},"ADJx4P14BFSdJvvpq3mDGHOcbjOWeW5KclC6u6l_fBg",[1833,1835],{"title":30,"path":31,"stem":32,"description":1834,"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":1836,"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.",1789915906193]