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