[{"data":1,"prerenderedAt":1873},["ShallowReactive",2],{"navigation_docs":3,"-learn-overview":612,"-learn-overview-surround":1868},[4,35,85,138,318,453,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],{"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},"Libraries","\u002Flibraries","6.libraries",[458,462,467,470,474,479,484],{"title":41,"path":459,"stem":460,"icon":461},"\u002Flibraries\u002Foverview","6.libraries\u002F0.overview","i-lucide-package",{"title":463,"path":464,"stem":465,"icon":466},"Emitting Events","\u002Flibraries\u002Femitting","6.libraries\u002F1.emitting","i-lucide-radio",{"title":56,"path":468,"stem":469,"icon":59},"\u002Flibraries\u002Ferrors","6.libraries\u002F2.errors",{"title":471,"path":472,"stem":473,"icon":132},"Errors Agents Can Act On","\u002Flibraries\u002Fagents","6.libraries\u002F3.agents",{"title":475,"path":476,"stem":477,"icon":478},"Exporting the Catalog","\u002Flibraries\u002Fexporting","6.libraries\u002F4.exporting","i-lucide-file-output",{"title":480,"path":481,"stem":482,"icon":483},"Migrating","\u002Flibraries\u002Fmigrating","6.libraries\u002F5.migrating","i-lucide-route",{"title":485,"path":486,"stem":487,"icon":488},"Testing","\u002Flibraries\u002Ftesting","6.libraries\u002F6.testing","i-lucide-flask-conical",{"title":490,"path":491,"stem":492,"children":493,"page":34},"Extend","\u002Fextend","7.extend",[494,498,503,508,512,517,521,525,529,533,538,543],{"title":41,"path":495,"stem":496,"icon":497},"\u002Fextend\u002Foverview","7.extend\u002F0.overview","i-lucide-blocks",{"title":499,"path":500,"stem":501,"icon":502},"Stream","\u002Fextend\u002Fstream","7.extend\u002F1.stream","i-lucide-radio-tower",{"title":504,"path":505,"stem":506,"icon":507},"Custom framework","\u002Fextend\u002Fcustom-framework","7.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":509,"path":510,"stem":511,"icon":502},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","7.extend\u002F11.diagnostics-channel",{"title":513,"path":514,"stem":515,"icon":516},"FS reader","\u002Fextend\u002Ffs-reader","7.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":415,"path":518,"stem":519,"icon":520},"\u002Fextend\u002Fconsumer-recipes","7.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":522,"path":523,"stem":524,"icon":497},"Plugins","\u002Fextend\u002Fplugins","7.extend\u002F4.plugins",{"title":526,"path":527,"stem":528,"icon":443},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","7.extend\u002F5.custom-enrichers",{"title":530,"path":531,"stem":532,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","7.extend\u002F6.tail-sampling",{"title":534,"path":535,"stem":536,"icon":537},"Identity headers","\u002Fextend\u002Fidentity-headers","7.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":539,"path":540,"stem":541,"icon":542},"Custom drains","\u002Fextend\u002Fcustom-drains","7.extend\u002F8.custom-drains","i-lucide-share-2",{"title":544,"path":545,"stem":546,"icon":547},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","7.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":436,"path":549,"stem":550,"children":551,"page":34},"\u002Freference","8.reference",[552,556,561,564,569,573,578,582],{"title":41,"path":553,"stem":554,"icon":555},"\u002Freference\u002Foverview","8.reference\u002F0.overview","i-lucide-book-marked",{"title":557,"path":558,"stem":559,"icon":560},"Configuration","\u002Freference\u002Fconfiguration","8.reference\u002F1.configuration","i-lucide-settings",{"title":383,"path":562,"stem":563,"icon":112},"\u002Freference\u002Fperformance","8.reference\u002F2.performance",{"title":565,"path":566,"stem":567,"icon":568},"Vite Plugin","\u002Freference\u002Fvite-plugin","8.reference\u002F3.vite-plugin","i-custom-vite",{"title":570,"path":571,"stem":572,"icon":388},"Best Practices","\u002Freference\u002Fbest-practices","8.reference\u002F4.best-practices",{"title":574,"path":575,"stem":576,"icon":577},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","8.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":579,"path":580,"stem":581,"icon":443},"Agent Skills","\u002Freference\u002Fagent-skills","8.reference\u002F6.agent-skills",{"title":583,"path":584,"stem":585,"icon":586},"Cost","\u002Freference\u002Fcost","8.reference\u002F7.cost","i-lucide-receipt",{"title":588,"path":589,"stem":590,"children":591,"page":34},"Compare","\u002Fcompare","9.compare",[592,596,600,604,608],{"title":593,"path":594,"stem":595,"icon":577},"evlog vs Pino","\u002Fcompare\u002Fpino","9.compare\u002F1.pino",{"title":597,"path":598,"stem":599,"icon":204},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","9.compare\u002F2.opentelemetry",{"title":601,"path":602,"stem":603,"icon":577},"evlog vs LogTape","\u002Fcompare\u002Flogtape","9.compare\u002F3.logtape",{"title":605,"path":606,"stem":607,"icon":577},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","9.compare\u002F4.winston",{"title":609,"path":610,"stem":611,"icon":577},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","9.compare\u002F5.consola",{"id":613,"title":614,"body":615,"description":1857,"extension":1858,"links":1859,"meta":1864,"navigation":1865,"path":42,"seo":1866,"stem":43,"__hash__":1867},"docs\u002F2.learn\u002F0.overview.md","Learn evlog",{"type":616,"value":617,"toc":1842},"minimark",[618,627,630,635,648,653,687,691,700,703,845,856,859,1125,1143,1147,1154,1310,1328,1332,1446,1450,1673,1682,1686,1689,1750,1754,1757,1826,1838],[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":301},"Standalone TypeScript"," and ",[641,646,295],{"href":296},".",[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":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.",[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:",[704,1155,1158],{"className":706,"code":1156,"filename":1157,"language":709,"meta":710,"style":710},"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",[661,1159,1160,1179,1183,1214,1232,1275,1295,1302],{"__ignoreMap":710},[714,1161,1162,1164,1166,1169,1171,1173,1175,1177],{"class":716,"line":717},[714,1163,721],{"class":720},[714,1165,725],{"class":724},[714,1167,1168],{"class":728}," useLogger",[714,1170,732],{"class":724},[714,1172,735],{"class":720},[714,1174,738],{"class":724},[714,1176,742],{"class":741},[714,1178,745],{"class":724},[714,1180,1181],{"class":716,"line":748},[714,1182,752],{"emptyLinePlaceholder":751},[714,1184,1185,1188,1191,1194,1196,1199,1202,1206,1208,1211],{"class":716,"line":755},[714,1186,1187],{"class":720},"export",[714,1189,1190],{"class":720}," default",[714,1192,1193],{"class":762}," defineEventHandler",[714,1195,765],{"class":728},[714,1197,1198],{"class":895},"async",[714,1200,1201],{"class":724}," (",[714,1203,1205],{"class":1204},"sHdIc","event",[714,1207,699],{"class":724},[714,1209,1210],{"class":895}," =>",[714,1212,1213],{"class":724}," {\n",[714,1215,1216,1219,1221,1224,1226,1228,1230],{"class":716,"line":789},[714,1217,1218],{"class":895},"  const",[714,1220,729],{"class":728},[714,1222,1223],{"class":724}," =",[714,1225,1168],{"class":762},[714,1227,765],{"class":804},[714,1229,1205],{"class":728},[714,1231,786],{"class":804},[714,1233,1234,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273],{"class":716,"line":984},[714,1235,1236],{"class":728},"  log",[714,1238,647],{"class":724},[714,1240,947],{"class":762},[714,1242,765],{"class":804},[714,1244,801],{"class":724},[714,1246,1082],{"class":804},[714,1248,808],{"class":724},[714,1250,725],{"class":724},[714,1252,1089],{"class":804},[714,1254,808],{"class":724},[714,1256,1094],{"class":839},[714,1258,776],{"class":724},[714,1260,1099],{"class":804},[714,1262,808],{"class":724},[714,1264,738],{"class":724},[714,1266,1106],{"class":741},[714,1268,768],{"class":724},[714,1270,732],{"class":724},[714,1272,732],{"class":724},[714,1274,786],{"class":804},[714,1276,1278,1281,1283,1286,1288,1292],{"class":716,"line":1277},6,[714,1279,1280],{"class":720},"  return",[714,1282,725],{"class":724},[714,1284,1285],{"class":804}," success",[714,1287,808],{"class":724},[714,1289,1291],{"class":1290},"sfNiH"," true",[714,1293,1294],{"class":724}," }\n",[714,1296,1298],{"class":716,"line":1297},7,[714,1299,1301],{"class":1300},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[714,1303,1305,1308],{"class":716,"line":1304},8,[714,1306,1307],{"class":724},"}",[714,1309,786],{"class":728},[631,1311,1312,1314,1315,668,1318,668,1321,1324,1325,1327],{"color":633,"icon":13},[661,1313,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,1316,1317],{},"useLogger",[661,1319,1320],{},"req.log",[661,1322,1323],{},"c.get('log')",", etc.). In Nuxt, ",[661,1326,1317],{}," is auto-imported.",[649,1329,1331],{"id":1330},"choose-the-mode-for-the-job","Choose the mode for the job",[1333,1334,1335,1357],"table",{},[1336,1337,1338],"thead",{},[1339,1340,1341,1344,1348,1354],"tr",{},[1342,1343],"th",{},[1342,1345,1346],{},[661,1347,698],{},[1342,1349,1350,852,1352],{},[661,1351,851],{},[661,1353,855],{},[1342,1355,1356],{},"Framework middleware",[1358,1359,1360,1377,1397,1416,1431],"tbody",{},[1339,1361,1362,1368,1371,1374],{},[1363,1364,1365],"td",{},[623,1366,1367],{},"Use case",[1363,1369,1370],{},"Quick one-off events",[1363,1372,1373],{},"Scripts, jobs, workers, queues, HTTP without a framework",[1363,1375,1376],{},"API routes with a framework integration",[1339,1378,1379,1384,1387,1393],{},[1363,1380,1381],{},[623,1382,1383],{},"Context",[1363,1385,1386],{},"Single call",[1363,1388,1389,1390],{},"Accumulate with ",[661,1391,1392],{},"set()",[1363,1394,1389,1395],{},[661,1396,1392],{},[1339,1398,1399,1404,1407,1413],{},[1363,1400,1401],{},[623,1402,1403],{},"Emit",[1363,1405,1406],{},"Immediate",[1363,1408,1409,1410],{},"Manual ",[661,1411,1412],{},"emit()",[1363,1414,1415],{},"Automatic on response end",[1339,1417,1418,1422,1425,1428],{},[1363,1419,1420],{},[623,1421,61],{},[1363,1423,1424],{},"None",[1363,1426,1427],{},"You manage it",[1363,1429,1430],{},"Framework manages it",[1339,1432,1433,1438,1441,1443],{},[1363,1434,1435],{},[623,1436,1437],{},"Output",[1363,1439,1440],{},"Console + drain",[1363,1442,1440],{},[1363,1444,1445],{},"Console + drain + enrich",[692,1447,1449],{"id":1448},"by-context","By context",[1333,1451,1452,1464],{},[1336,1453,1454],{},[1339,1455,1456,1458,1461],{},[1342,1457,1383],{},[1342,1459,1460],{},"Best fit",[1342,1462,1463],{},"Why",[1358,1465,1466,1484,1499,1520,1541,1559,1583,1601,1617,1637,1652],{},[1339,1467,1468,1473,1481],{},[1363,1469,1470],{},[623,1471,1472],{},"HTTP route in Nuxt \u002F Next \u002F Hono \u002F Express \u002F …",[1363,1474,1475,1477,1478],{},[661,1476,1152],{}," via ",[641,1479,1480],{"href":236},"framework integration",[1363,1482,1483],{},"One wide event per request, auto-emitted on response end",[1339,1485,1486,1491,1496],{},[1363,1487,1488],{},[623,1489,1490],{},"HTTP handler without a framework",[1363,1492,1493],{},[661,1494,1495],{},"createRequestLogger({ method, path })",[1363,1497,1498],{},"Same shape as framework middleware, manual emit",[1339,1500,1501,1506,1517],{},[1363,1502,1503],{},[623,1504,1505],{},"CLI tool \u002F one-shot script",[1363,1507,1508,1511,1512,1514,1515],{},[661,1509,1510],{},"log.*"," for steps + ",[661,1513,851],{}," for the run summary — see ",[641,1516,300],{"href":301},[1363,1518,1519],{},"Pretty in dev, structured in CI, one summary event for the whole run",[1339,1521,1522,1527,1538],{},[1363,1523,1524],{},[623,1525,1526],{},"Published library",[1363,1528,1529,1531,1532,1535,1536],{},[661,1530,851],{}," only — never ",[661,1533,1534],{},"initLogger"," — see ",[641,1537,300],{"href":301},[1363,1539,1540],{},"Don't pollute the host app's global config or force a drain on consumers",[1339,1542,1543,1548,1556],{},[1363,1544,1545],{},[623,1546,1547],{},"Background job \u002F queue worker \u002F cron",[1363,1549,1550,1553,1554],{},[661,1551,1552],{},"createLogger({ jobId, queue })"," per invocation — see ",[641,1555,300],{"href":301},[1363,1557,1558],{},"One wide event per job run, perfect for retry analysis",[1339,1560,1561,1566,1576],{},[1363,1562,1563],{},[623,1564,1565],{},"Cloudflare Worker \u002F edge function",[1363,1567,1568,1571,1572,1535,1574],{},[661,1569,1570],{},"createWorkersLogger(req)"," or ",[661,1573,855],{},[641,1575,295],{"href":296},[1363,1577,1578,1579,1582],{},"Per-request event, no ",[661,1580,1581],{},"process"," globals required",[1339,1584,1585,1589,1598],{},[1363,1586,1587],{},[623,1588,314],{},[1363,1590,1591,1593,1594,1553,1596],{},[661,1592,1534],{}," once + ",[661,1595,851],{},[641,1597,314],{"href":315},[1363,1599,1600],{},"Cold-start init, per-event scope, drain flush in the handler",[1339,1602,1603,1608,1614],{},[1363,1604,1605],{},[623,1606,1607],{},"Batch \u002F pipeline step",[1363,1609,1610,1613],{},[661,1611,1612],{},"createLogger({ step })"," per stage",[1363,1615,1616],{},"One event per stage with inputs and outputs side by side",[1339,1618,1619,1624,1634],{},[1363,1620,1621],{},[623,1622,1623],{},"AI agent \u002F LLM call",[1363,1625,1626,1628,1629],{},[661,1627,851],{}," + ",[641,1630,1631],{"href":338},[661,1632,1633],{},"createAILogger",[1363,1635,1636],{},"Token usage, tool calls, streaming metrics on the same wide event",[1339,1638,1639,1644,1649],{},[1363,1640,1641],{},[623,1642,1643],{},"Library function called inside a request",[1363,1645,1646,1648],{},[661,1647,1152],{}," from caller, or accept a logger as argument",[1363,1650,1651],{},"Inherit the parent's request context, contribute to the same wide event",[1339,1653,1654,1659,1664],{},[1363,1655,1656],{},[623,1657,1658],{},"Shared workspace package",[1363,1660,1661,1662],{},"Treat it like a library — see ",[641,1663,300],{"href":301},[1363,1665,1666,1667,1669,1670,1672],{},"Host app owns ",[661,1668,1534],{}," \u002F drain; packages use ",[661,1671,851],{}," or accept a logger",[631,1674,1676,1677,644,1679,1681],{"color":633,"icon":1675},"i-lucide-lightbulb","None of these is an \"upgrade\" of another. Use ",[661,1678,698],{},[661,1680,851],{}," in the same file when it makes sense, since they share the global drain, redaction, and types.",[649,1683,1685],{"id":1684},"what-all-three-share","What all three share",[619,1687,1688],{},"All three modes share the same foundation:",[1690,1691,1692,1703,1711,1733,1738,1744],"ul",{},[1693,1694,1695,1698,1699,1702],"li",{},[623,1696,1697],{},"Pretty output"," in development, ",[623,1700,1701],{},"JSON"," in production (default, no configuration needed)",[1693,1704,1705,1707,1708],{},[623,1706,544],{}," to send events to Axiom, Sentry, PostHog, and more. See ",[641,1709,1710],{"href":153},"Integrate \u002F Adapters",[1693,1712,1713,1716,1717,668,1720,1139,1723,1726,1727,1732],{},[623,1714,1715],{},"Structured errors"," with ",[661,1718,1719],{},"why",[661,1721,1722],{},"fix",[661,1724,1725],{},"link",", plus optional backend-only ",[623,1728,1729],{},[661,1730,1731],{},"internal"," for logs",[1693,1734,1735,1737],{},[623,1736,66],{}," (head + tail) to control log volume in production",[1693,1739,1740,1743],{},[623,1741,1742],{},"Redaction"," that wipes secrets before they ever leave the process",[1693,1745,1746,1749],{},[623,1747,1748],{},"Zero dependencies",", ~6 kB gzip",[649,1751,1753],{"id":1752},"where-to-go-from-here","Where to go from here",[619,1755,1756],{},"After the three modes, the rest of Learn covers the concepts that show up across every mode:",[1690,1758,1759,1780,1785,1793,1798,1811],{},[1693,1760,1761,1763,1764,668,1766,668,1768,668,1770,1772,1773,1776,1777],{},[641,1762,56],{"href":57},": ",[661,1765,1719],{},[661,1767,1722],{},[661,1769,1725],{},[661,1771,1731],{},", and how ",[661,1774,1775],{},"createError"," differs from ",[661,1778,1779],{},"throw new Error",[1693,1781,1782,1784],{},[641,1783,81],{"href":82},": typed error \u002F audit catalogs that survive refactors",[1693,1786,1787,1789,1790,1792],{},[641,1788,61],{"href":62},": exactly what happens between ",[661,1791,1412],{}," and your drain",[1693,1794,1795,1797],{},[641,1796,66],{"href":67},": keep all errors and slow requests; drop healthy noise",[1693,1799,1800,1802,1803,1806,1807,1810],{},[641,1801,76],{"href":77},": augment ",[661,1804,1805],{},"RequestLogger"," so ",[661,1808,1809],{},"log.set"," is autocompleted",[1693,1812,1813,1815,1816,668,1819,668,1822,1825],{},[641,1814,1742],{"href":72},": the rules that strip ",[661,1817,1818],{},"authorization",[661,1820,1821],{},"password",[661,1823,1824],{},"token",", etc. before drain",[619,1827,1828,1829,1831,1832,1837],{},"When you're done with Learn, head to ",[641,1830,139],{"href":236}," to wire evlog into your stack, or run ",[641,1833,1834],{"href":100},[661,1835,1836],{},"evlog map"," first to find missing evlog patterns in supported entry points.",[1839,1840,1841],"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":1843},[1844,1845,1852,1855,1856],{"id":651,"depth":748,"text":652},{"id":689,"depth":748,"text":690,"children":1846},[1847,1849,1851],{"id":694,"depth":755,"text":1848},"Simple Logging (log)",{"id":847,"depth":755,"text":1850},"Wide Events (createLogger \u002F createRequestLogger)",{"id":1145,"depth":755,"text":1146},{"id":1330,"depth":748,"text":1331,"children":1853},[1854],{"id":1448,"depth":755,"text":1449},{"id":1684,"depth":748,"text":1685},{"id":1752,"depth":748,"text":1753},"The mental model: three logging modes, the wide event lifecycle, sampling, typed fields, and redaction. Read it in order if you are new.","md",[1860,1862,1863],{"label":46,"icon":49,"to":47,"color":637,"variant":1861},"subtle",{"label":51,"icon":54,"to":52,"color":637,"variant":1861},{"label":61,"icon":64,"to":62,"color":637,"variant":1861},{},{"title":41,"icon":44},{"title":614,"description":1857},"ADJx4P14BFSdJvvpq3mDGHOcbjOWeW5KclC6u6l_fBg",[1869,1871],{"title":30,"path":31,"stem":32,"description":1870,"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":1872,"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.",1789294018920]