[{"data":1,"prerenderedAt":4115},["ShallowReactive",2],{"navigation_docs":3,"-learn-simple-logging":607,"-learn-simple-logging-surround":4110},[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":46,"body":609,"description":4100,"extension":4101,"links":4102,"meta":4106,"navigation":4107,"path":47,"seo":4108,"stem":48,"__hash__":4109},"docs\u002F2.learn\u002F1.simple-logging.md",{"type":610,"value":611,"toc":4082},"minimark",[612,625,639,651,655,658,798,808,820,824,829,832,974,1024,1028,1043,1176,1225,1228,1265,1319,1330,1333,1337,1340,1502,1559,1569,1573,1682,1695,1699,1703,1849,1853,1994,1998,2207,2211,2218,2377,2381,2392,3206,3209,3420,3429,3439,3516,3525,3532,3536,3551,4018,4026,4030,4078],[613,614,615,616,620,621,624],"p",{},"The ",[617,618,619],"code",{},"log"," API is evlog's general-purpose logger. Use it the way you'd use pino, consola, or ",[617,622,623],{},"console.log",": every call emits a structured event through the same drain pipeline as wide events. The two modes coexist; neither is an upgrade of the other.",[626,627,630,631,635,636,638],"callout",{"color":628,"icon":629},"neutral","i-lucide-globe","Looking for the same API in CLIs, libraries, jobs, and edge? Start with ",[632,633,634],"a",{"href":306},"Standalone TypeScript"," and ",[632,637,300],{"href":301},".",[626,640,642,643,645,646,650],{"color":641,"icon":448},"info","In Nuxt, ",[617,644,619],{}," is ",[647,648,649],"strong",{},"auto-imported",". No import statement needed.",[652,653,431],"h2",{"id":654},"setup",[613,656,657],{},"For standalone projects (non-Nuxt), initialize once at startup:",[659,660,666],"pre",{"className":661,"code":662,"filename":663,"language":664,"meta":665,"style":665},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { initLogger, log } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-app' },\n})\n\nlog.info('app', 'Server started')\n","src\u002Findex.ts","typescript","",[617,667,668,707,714,727,755,764,769],{"__ignoreMap":665},[669,670,673,677,681,685,688,691,694,697,700,704],"span",{"class":671,"line":672},"line",1,[669,674,676],{"class":675},"s7zQu","import",[669,678,680],{"class":679},"sMK4o"," {",[669,682,684],{"class":683},"sTEyZ"," initLogger",[669,686,687],{"class":679},",",[669,689,690],{"class":683}," log",[669,692,693],{"class":679}," }",[669,695,696],{"class":675}," from",[669,698,699],{"class":679}," '",[669,701,703],{"class":702},"sfazB","evlog",[669,705,706],{"class":679},"'\n",[669,708,710],{"class":671,"line":709},2,[669,711,713],{"emptyLinePlaceholder":712},true,"\n",[669,715,717,721,724],{"class":671,"line":716},3,[669,718,720],{"class":719},"s2Zo4","initLogger",[669,722,723],{"class":683},"(",[669,725,726],{"class":679},"{\n",[669,728,730,734,737,739,742,744,746,749,752],{"class":671,"line":729},4,[669,731,733],{"class":732},"swJcz","  env",[669,735,736],{"class":679},":",[669,738,680],{"class":679},[669,740,741],{"class":732}," service",[669,743,736],{"class":679},[669,745,699],{"class":679},[669,747,748],{"class":702},"my-app",[669,750,751],{"class":679},"'",[669,753,754],{"class":679}," },\n",[669,756,758,761],{"class":671,"line":757},5,[669,759,760],{"class":679},"}",[669,762,763],{"class":683},")\n",[669,765,767],{"class":671,"line":766},6,[669,768,713],{"emptyLinePlaceholder":712},[669,770,772,774,776,778,780,782,785,787,789,791,794,796],{"class":671,"line":771},7,[669,773,619],{"class":683},[669,775,638],{"class":679},[669,777,641],{"class":719},[669,779,723],{"class":683},[669,781,751],{"class":679},[669,783,784],{"class":702},"app",[669,786,751],{"class":679},[669,788,687],{"class":679},[669,790,699],{"class":679},[669,792,793],{"class":702},"Server started",[669,795,751],{"class":679},[669,797,763],{"class":683},[626,799,800,803,804,807],{"color":641,"icon":13},[617,801,802],{},"env.service"," defaults to ",[617,805,806],{},"'app'"," if not specified. Only set it if you want a custom service name.",[613,809,810,812,813,816,817,638],{},[617,811,619],{}," also works with no ",[617,814,815],{},"initLogger()"," call at all: every call prints with the defaults. That is fine for a scratch script, and it is how the default import below behaves. In production it means no redaction and no drain, so the first emitted event logs a one-time warning pointing at ",[617,818,819],{},"initLogger({ drain })",[652,821,823],{"id":822},"call-it-two-ways","Call it two ways",[825,826,828],"h3",{"id":827},"tagged-logs","Tagged Logs",[613,830,831],{},"Pass a tag and a message for quick, readable output:",[659,833,835],{"className":661,"code":834,"filename":663,"language":664,"meta":665,"style":665},"import { log } from 'evlog'\n\nlog.info('auth', 'User logged in')\nlog.warn('cache', 'Cache miss for key user:42')\nlog.error('payment', 'Stripe webhook failed')\nlog.debug('router', 'Matched route \u002Fapi\u002Fcheckout')\n",[617,836,837,855,859,887,916,945],{"__ignoreMap":665},[669,838,839,841,843,845,847,849,851,853],{"class":671,"line":672},[669,840,676],{"class":675},[669,842,680],{"class":679},[669,844,690],{"class":683},[669,846,693],{"class":679},[669,848,696],{"class":675},[669,850,699],{"class":679},[669,852,703],{"class":702},[669,854,706],{"class":679},[669,856,857],{"class":671,"line":709},[669,858,713],{"emptyLinePlaceholder":712},[669,860,861,863,865,867,869,871,874,876,878,880,883,885],{"class":671,"line":716},[669,862,619],{"class":683},[669,864,638],{"class":679},[669,866,641],{"class":719},[669,868,723],{"class":683},[669,870,751],{"class":679},[669,872,873],{"class":702},"auth",[669,875,751],{"class":679},[669,877,687],{"class":679},[669,879,699],{"class":679},[669,881,882],{"class":702},"User logged in",[669,884,751],{"class":679},[669,886,763],{"class":683},[669,888,889,891,893,896,898,900,903,905,907,909,912,914],{"class":671,"line":729},[669,890,619],{"class":683},[669,892,638],{"class":679},[669,894,895],{"class":719},"warn",[669,897,723],{"class":683},[669,899,751],{"class":679},[669,901,902],{"class":702},"cache",[669,904,751],{"class":679},[669,906,687],{"class":679},[669,908,699],{"class":679},[669,910,911],{"class":702},"Cache miss for key user:42",[669,913,751],{"class":679},[669,915,763],{"class":683},[669,917,918,920,922,925,927,929,932,934,936,938,941,943],{"class":671,"line":757},[669,919,619],{"class":683},[669,921,638],{"class":679},[669,923,924],{"class":719},"error",[669,926,723],{"class":683},[669,928,751],{"class":679},[669,930,931],{"class":702},"payment",[669,933,751],{"class":679},[669,935,687],{"class":679},[669,937,699],{"class":679},[669,939,940],{"class":702},"Stripe webhook failed",[669,942,751],{"class":679},[669,944,763],{"class":683},[669,946,947,949,951,954,956,958,961,963,965,967,970,972],{"class":671,"line":766},[669,948,619],{"class":683},[669,950,638],{"class":679},[669,952,953],{"class":719},"debug",[669,955,723],{"class":683},[669,957,751],{"class":679},[669,959,960],{"class":702},"router",[669,962,751],{"class":679},[669,964,687],{"class":679},[669,966,699],{"class":679},[669,968,969],{"class":702},"Matched route \u002Fapi\u002Fcheckout",[669,971,751],{"class":679},[669,973,763],{"class":683},[659,975,980],{"className":976,"code":977,"filename":978,"language":979,"meta":665,"style":665},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","10:23:45.612 [auth] User logged in\n10:23:45.613 [cache] Cache miss for key user:42\n10:23:45.614 ERROR [payment] Stripe webhook failed\n10:23:45.615 [router] Matched route \u002Fapi\u002Fcheckout\n","Output (Pretty)","bash",[617,981,982,991,1005,1016],{"__ignoreMap":665},[669,983,984,988],{"class":671,"line":672},[669,985,987],{"class":986},"sBMFI","10:23:45.612",[669,989,990],{"class":683}," [auth] User logged in\n",[669,992,993,996,999,1002],{"class":671,"line":709},[669,994,995],{"class":986},"10:23:45.613",[669,997,998],{"class":683}," [cache] Cache miss ",[669,1000,1001],{"class":675},"for",[669,1003,1004],{"class":683}," key user:42\n",[669,1006,1007,1010,1013],{"class":671,"line":716},[669,1008,1009],{"class":986},"10:23:45.614",[669,1011,1012],{"class":702}," ERROR",[669,1014,1015],{"class":683}," [payment] Stripe webhook failed\n",[669,1017,1018,1021],{"class":671,"line":729},[669,1019,1020],{"class":986},"10:23:45.615",[669,1022,1023],{"class":683}," [router] Matched route \u002Fapi\u002Fcheckout\n",[825,1025,1027],{"id":1026},"interpolate-values-into-the-message","Interpolate values into the message",[613,1029,1030,1031,1034,1035,1038,1039,1042],{},"When the message contains ",[617,1032,1033],{},"%s",", ",[617,1036,1037],{},"%d",", or ",[617,1040,1041],{},"%j"," and extra arguments follow, evlog formats it before emitting. Call sites that come from pino or consola keep their printf style instead of becoming template strings:",[659,1044,1046],{"className":661,"code":1045,"filename":663,"language":664,"meta":665,"style":665},"log.info('auth', 'User %s logged in from %s', 'alice', '10.0.0.7')\nlog.info('payment', 'Retrying charge for order %d', 4091)\nlog.info('debug', 'Payload %j', { orderId: 4091, total: 9999 })\n",[617,1047,1048,1093,1126],{"__ignoreMap":665},[669,1049,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1071,1073,1075,1077,1080,1082,1084,1086,1089,1091],{"class":671,"line":672},[669,1051,619],{"class":683},[669,1053,638],{"class":679},[669,1055,641],{"class":719},[669,1057,723],{"class":683},[669,1059,751],{"class":679},[669,1061,873],{"class":702},[669,1063,751],{"class":679},[669,1065,687],{"class":679},[669,1067,699],{"class":679},[669,1069,1070],{"class":702},"User %s logged in from %s",[669,1072,751],{"class":679},[669,1074,687],{"class":679},[669,1076,699],{"class":679},[669,1078,1079],{"class":702},"alice",[669,1081,751],{"class":679},[669,1083,687],{"class":679},[669,1085,699],{"class":679},[669,1087,1088],{"class":702},"10.0.0.7",[669,1090,751],{"class":679},[669,1092,763],{"class":683},[669,1094,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1116,1118,1120,1124],{"class":671,"line":709},[669,1096,619],{"class":683},[669,1098,638],{"class":679},[669,1100,641],{"class":719},[669,1102,723],{"class":683},[669,1104,751],{"class":679},[669,1106,931],{"class":702},[669,1108,751],{"class":679},[669,1110,687],{"class":679},[669,1112,699],{"class":679},[669,1114,1115],{"class":702},"Retrying charge for order %d",[669,1117,751],{"class":679},[669,1119,687],{"class":679},[669,1121,1123],{"class":1122},"sbssI"," 4091",[669,1125,763],{"class":683},[669,1127,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1149,1151,1153,1155,1158,1160,1162,1164,1167,1169,1172,1174],{"class":671,"line":716},[669,1129,619],{"class":683},[669,1131,638],{"class":679},[669,1133,641],{"class":719},[669,1135,723],{"class":683},[669,1137,751],{"class":679},[669,1139,953],{"class":702},[669,1141,751],{"class":679},[669,1143,687],{"class":679},[669,1145,699],{"class":679},[669,1147,1148],{"class":702},"Payload %j",[669,1150,751],{"class":679},[669,1152,687],{"class":679},[669,1154,680],{"class":679},[669,1156,1157],{"class":732}," orderId",[669,1159,736],{"class":679},[669,1161,1123],{"class":1122},[669,1163,687],{"class":679},[669,1165,1166],{"class":732}," total",[669,1168,736],{"class":679},[669,1170,1171],{"class":1122}," 9999",[669,1173,693],{"class":679},[669,1175,763],{"class":683},[659,1177,1179],{"className":976,"code":1178,"filename":978,"language":979,"meta":665,"style":665},"10:23:45.612 [auth] User alice logged in from 10.0.0.7\n10:23:45.613 [payment] Retrying charge for order 4091\n10:23:45.614 [debug] Payload {\"orderId\":4091,\"total\":9999}\n",[617,1180,1181,1188,1203],{"__ignoreMap":665},[669,1182,1183,1185],{"class":671,"line":672},[669,1184,987],{"class":986},[669,1186,1187],{"class":683}," [auth] User alice logged in from 10.0.0.7\n",[669,1189,1190,1192,1195,1197,1200],{"class":671,"line":709},[669,1191,995],{"class":986},[669,1193,1194],{"class":683}," [payment] Retrying charge ",[669,1196,1001],{"class":675},[669,1198,1199],{"class":683}," order ",[669,1201,1202],{"class":1122},"4091\n",[669,1204,1205,1207,1210,1213,1216,1219,1222],{"class":671,"line":716},[669,1206,1009],{"class":986},[669,1208,1209],{"class":683}," [debug] Payload ",[669,1211,1212],{"class":679},"{",[669,1214,1215],{"class":986},"\"orderId\"",[669,1217,1218],{"class":986},":4091,",[669,1220,1221],{"class":986},"\"total\"",[669,1223,1224],{"class":986},":9999}\n",[613,1226,1227],{},"The same form works without a tag: when the first string contains a specifier, evlog treats it as the message and the call as untagged.",[659,1229,1231],{"className":661,"code":1230,"filename":663,"language":664,"meta":665,"style":665},"log.info('user %s logged in', 'alice') \u002F\u002F emits [log] user alice logged in\n",[617,1232,1233],{"__ignoreMap":665},[669,1234,1235,1237,1239,1241,1243,1245,1248,1250,1252,1254,1256,1258,1261],{"class":671,"line":672},[669,1236,619],{"class":683},[669,1238,638],{"class":679},[669,1240,641],{"class":719},[669,1242,723],{"class":683},[669,1244,751],{"class":679},[669,1246,1247],{"class":702},"user %s logged in",[669,1249,751],{"class":679},[669,1251,687],{"class":679},[669,1253,699],{"class":679},[669,1255,1079],{"class":702},[669,1257,751],{"class":679},[669,1259,1260],{"class":683},") ",[669,1262,1264],{"class":1263},"sHwdD","\u002F\u002F emits [log] user alice logged in\n",[1266,1267,1268,1281],"table",{},[1269,1270,1271],"thead",{},[1272,1273,1274,1278],"tr",{},[1275,1276,1277],"th",{},"Specifier",[1275,1279,1280],{},"Formats the argument as",[1282,1283,1284,1294,1310],"tbody",{},[1272,1285,1286,1291],{},[1287,1288,1289],"td",{},[617,1290,1033],{},[1287,1292,1293],{},"string, objects and arrays as JSON",[1272,1295,1296,1300],{},[1287,1297,1298],{},[617,1299,1037],{},[1287,1301,1302,1303,1306,1307],{},"number, coerced with ",[617,1304,1305],{},"Number()",", bigints as ",[617,1308,1309],{},"10n",[1272,1311,1312,1316],{},[1287,1313,1314],{},[617,1315,1041],{},[1287,1317,1318],{},"JSON, with a string fallback for values JSON cannot serialize",[613,1320,1321,1322,1325,1326,1329],{},"Interpolation runs only when extra arguments are present. A message with a ",[617,1323,1324],{},"%"," and no arguments is logged unchanged; once arguments are involved, write ",[617,1327,1328],{},"%%"," for a literal percent.",[626,1331,1332],{"color":641,"icon":13},"Formatting applies to the message string only. Field values in a structured event are never treated as format input.",[825,1334,1336],{"id":1335},"structured-events","Structured Events",[613,1338,1339],{},"Pass an object for rich, queryable events that flow through the drain pipeline:",[659,1341,1343],{"className":661,"code":1342,"filename":663,"language":664,"meta":665,"style":665},"import { log } from 'evlog'\n\nlog.info({ action: 'user_login', userId: 42, method: 'oauth', provider: 'github' })\nlog.error({ action: 'sync_failed', source: 'postgres', target: 's3', error: 'connection_timeout' })\n",[617,1344,1345,1363,1367,1433],{"__ignoreMap":665},[669,1346,1347,1349,1351,1353,1355,1357,1359,1361],{"class":671,"line":672},[669,1348,676],{"class":675},[669,1350,680],{"class":679},[669,1352,690],{"class":683},[669,1354,693],{"class":679},[669,1356,696],{"class":675},[669,1358,699],{"class":679},[669,1360,703],{"class":702},[669,1362,706],{"class":679},[669,1364,1365],{"class":671,"line":709},[669,1366,713],{"emptyLinePlaceholder":712},[669,1368,1369,1371,1373,1375,1377,1379,1382,1384,1386,1389,1391,1393,1396,1398,1401,1403,1406,1408,1410,1413,1415,1417,1420,1422,1424,1427,1429,1431],{"class":671,"line":716},[669,1370,619],{"class":683},[669,1372,638],{"class":679},[669,1374,641],{"class":719},[669,1376,723],{"class":683},[669,1378,1212],{"class":679},[669,1380,1381],{"class":732}," action",[669,1383,736],{"class":679},[669,1385,699],{"class":679},[669,1387,1388],{"class":702},"user_login",[669,1390,751],{"class":679},[669,1392,687],{"class":679},[669,1394,1395],{"class":732}," userId",[669,1397,736],{"class":679},[669,1399,1400],{"class":1122}," 42",[669,1402,687],{"class":679},[669,1404,1405],{"class":732}," method",[669,1407,736],{"class":679},[669,1409,699],{"class":679},[669,1411,1412],{"class":702},"oauth",[669,1414,751],{"class":679},[669,1416,687],{"class":679},[669,1418,1419],{"class":732}," provider",[669,1421,736],{"class":679},[669,1423,699],{"class":679},[669,1425,1426],{"class":702},"github",[669,1428,751],{"class":679},[669,1430,693],{"class":679},[669,1432,763],{"class":683},[669,1434,1435,1437,1439,1441,1443,1445,1447,1449,1451,1454,1456,1458,1461,1463,1465,1468,1470,1472,1475,1477,1479,1482,1484,1486,1489,1491,1493,1496,1498,1500],{"class":671,"line":729},[669,1436,619],{"class":683},[669,1438,638],{"class":679},[669,1440,924],{"class":719},[669,1442,723],{"class":683},[669,1444,1212],{"class":679},[669,1446,1381],{"class":732},[669,1448,736],{"class":679},[669,1450,699],{"class":679},[669,1452,1453],{"class":702},"sync_failed",[669,1455,751],{"class":679},[669,1457,687],{"class":679},[669,1459,1460],{"class":732}," source",[669,1462,736],{"class":679},[669,1464,699],{"class":679},[669,1466,1467],{"class":702},"postgres",[669,1469,751],{"class":679},[669,1471,687],{"class":679},[669,1473,1474],{"class":732}," target",[669,1476,736],{"class":679},[669,1478,699],{"class":679},[669,1480,1481],{"class":702},"s3",[669,1483,751],{"class":679},[669,1485,687],{"class":679},[669,1487,1488],{"class":732}," error",[669,1490,736],{"class":679},[669,1492,699],{"class":679},[669,1494,1495],{"class":702},"connection_timeout",[669,1497,751],{"class":679},[669,1499,693],{"class":679},[669,1501,763],{"class":683},[659,1503,1505],{"className":976,"code":1504,"filename":978,"language":979,"meta":665,"style":665},"10:23:45.612 INFO [my-app]\n  ├─ action: user_login\n  ├─ userId: 42\n  ├─ method: oauth\n  └─ provider: github\n",[617,1506,1507,1517,1528,1538,1548],{"__ignoreMap":665},[669,1508,1509,1511,1514],{"class":671,"line":672},[669,1510,987],{"class":986},[669,1512,1513],{"class":702}," INFO",[669,1515,1516],{"class":683}," [my-app]\n",[669,1518,1519,1522,1525],{"class":671,"line":709},[669,1520,1521],{"class":986},"  ├─",[669,1523,1524],{"class":702}," action:",[669,1526,1527],{"class":702}," user_login\n",[669,1529,1530,1532,1535],{"class":671,"line":716},[669,1531,1521],{"class":986},[669,1533,1534],{"class":702}," userId:",[669,1536,1537],{"class":1122}," 42\n",[669,1539,1540,1542,1545],{"class":671,"line":729},[669,1541,1521],{"class":986},[669,1543,1544],{"class":702}," method:",[669,1546,1547],{"class":702}," oauth\n",[669,1549,1550,1553,1556],{"class":671,"line":757},[669,1551,1552],{"class":986},"  └─",[669,1554,1555],{"class":702}," provider:",[669,1557,1558],{"class":702}," github\n",[626,1560,1561,1564,1565,1568],{"color":641,"icon":13},[647,1562,1563],{},"Tagged logs"," are optimized for console readability. ",[647,1566,1567],{},"Structured events"," (object form) produce full wide events that flow through the drain pipeline to external services.",[652,1570,1572],{"id":1571},"choose-a-level-and-what-it-costs","Choose a level, and what it costs",[1266,1574,1575,1588],{},[1269,1576,1577],{},[1272,1578,1579,1582,1585],{},[1275,1580,1581],{},"Level",[1275,1583,1584],{},"Method",[1275,1586,1587],{},"When to use",[1282,1589,1590,1605,1619,1633,1647,1661],{},[1272,1591,1592,1597,1602],{},[1287,1593,1594],{},[617,1595,1596],{},"fatal",[1287,1598,1599],{},[617,1600,1601],{},"log.fatal()",[1287,1603,1604],{},"Unrecoverable failures: the request or process cannot continue. Always kept, even when sampling would drop it",[1272,1606,1607,1611,1616],{},[1287,1608,1609],{},[617,1610,641],{},[1287,1612,1613],{},[617,1614,1615],{},"log.info()",[1287,1617,1618],{},"Normal operations: startup, shutdown, successful actions",[1272,1620,1621,1625,1630],{},[1287,1622,1623],{},[617,1624,895],{},[1287,1626,1627],{},[617,1628,1629],{},"log.warn()",[1287,1631,1632],{},"Unexpected but recoverable situations: cache miss, retry, deprecation",[1272,1634,1635,1639,1644],{},[1287,1636,1637],{},[617,1638,924],{},[1287,1640,1641],{},[617,1642,1643],{},"log.error()",[1287,1645,1646],{},"Failures that need attention: API errors, timeouts, invalid state",[1272,1648,1649,1653,1658],{},[1287,1650,1651],{},[617,1652,953],{},[1287,1654,1655],{},[617,1656,1657],{},"log.debug()",[1287,1659,1660],{},"Development-only details: SQL queries, intermediate state, routing",[1272,1662,1663,1668,1673],{},[1287,1664,1665],{},[617,1666,1667],{},"trace",[1287,1669,1670],{},[617,1671,1672],{},"log.trace()",[1287,1674,1675,1676,1678,1679],{},"Very fine-grained details below ",[617,1677,953],{},". Dropped by default; opt in with ",[617,1680,1681],{},"sampling.rates.trace",[626,1683,1685,1687,1688,1690,1691,1694],{"color":1684,"icon":483},"warning",[617,1686,1657],{}," calls can be stripped from production builds using the ",[632,1689,560],{"href":561}," or the Nuxt module's ",[617,1692,1693],{},"strip"," option.",[652,1696,1698],{"id":1697},"patterns-worth-copying","Patterns worth copying",[825,1700,1702],{"id":1701},"application-lifecycle","Application Lifecycle",[659,1704,1706],{"className":661,"code":1705,"filename":663,"language":664,"meta":665,"style":665},"import { log } from 'evlog'\n\nlog.info('app', 'Starting server on port 3000')\nlog.info({ action: 'db_connected', host: 'localhost', database: 'mydb', pool: 10 })\nlog.info('app', 'Ready to accept connections')\n",[617,1707,1708,1726,1730,1757,1822],{"__ignoreMap":665},[669,1709,1710,1712,1714,1716,1718,1720,1722,1724],{"class":671,"line":672},[669,1711,676],{"class":675},[669,1713,680],{"class":679},[669,1715,690],{"class":683},[669,1717,693],{"class":679},[669,1719,696],{"class":675},[669,1721,699],{"class":679},[669,1723,703],{"class":702},[669,1725,706],{"class":679},[669,1727,1728],{"class":671,"line":709},[669,1729,713],{"emptyLinePlaceholder":712},[669,1731,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1753,1755],{"class":671,"line":716},[669,1733,619],{"class":683},[669,1735,638],{"class":679},[669,1737,641],{"class":719},[669,1739,723],{"class":683},[669,1741,751],{"class":679},[669,1743,784],{"class":702},[669,1745,751],{"class":679},[669,1747,687],{"class":679},[669,1749,699],{"class":679},[669,1751,1752],{"class":702},"Starting server on port 3000",[669,1754,751],{"class":679},[669,1756,763],{"class":683},[669,1758,1759,1761,1763,1765,1767,1769,1771,1773,1775,1778,1780,1782,1785,1787,1789,1792,1794,1796,1799,1801,1803,1806,1808,1810,1813,1815,1818,1820],{"class":671,"line":729},[669,1760,619],{"class":683},[669,1762,638],{"class":679},[669,1764,641],{"class":719},[669,1766,723],{"class":683},[669,1768,1212],{"class":679},[669,1770,1381],{"class":732},[669,1772,736],{"class":679},[669,1774,699],{"class":679},[669,1776,1777],{"class":702},"db_connected",[669,1779,751],{"class":679},[669,1781,687],{"class":679},[669,1783,1784],{"class":732}," host",[669,1786,736],{"class":679},[669,1788,699],{"class":679},[669,1790,1791],{"class":702},"localhost",[669,1793,751],{"class":679},[669,1795,687],{"class":679},[669,1797,1798],{"class":732}," database",[669,1800,736],{"class":679},[669,1802,699],{"class":679},[669,1804,1805],{"class":702},"mydb",[669,1807,751],{"class":679},[669,1809,687],{"class":679},[669,1811,1812],{"class":732}," pool",[669,1814,736],{"class":679},[669,1816,1817],{"class":1122}," 10",[669,1819,693],{"class":679},[669,1821,763],{"class":683},[669,1823,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1845,1847],{"class":671,"line":757},[669,1825,619],{"class":683},[669,1827,638],{"class":679},[669,1829,641],{"class":719},[669,1831,723],{"class":683},[669,1833,751],{"class":679},[669,1835,784],{"class":702},[669,1837,751],{"class":679},[669,1839,687],{"class":679},[669,1841,699],{"class":679},[669,1843,1844],{"class":702},"Ready to accept connections",[669,1846,751],{"class":679},[669,1848,763],{"class":683},[825,1850,1852],{"id":1851},"background-tasks","Background Tasks",[659,1854,1857],{"className":661,"code":1855,"filename":1856,"language":664,"meta":665,"style":665},"import { log } from 'evlog'\n\nlog.info({ action: 'cron_started', job: 'cleanup', schedule: '0 *\u002F6 * * *' })\nlog.info({ action: 'cron_completed', job: 'cleanup', deleted: 42, duration: 1200 })\n","src\u002Fjobs\u002Fcleanup.ts",[617,1858,1859,1877,1881,1936],{"__ignoreMap":665},[669,1860,1861,1863,1865,1867,1869,1871,1873,1875],{"class":671,"line":672},[669,1862,676],{"class":675},[669,1864,680],{"class":679},[669,1866,690],{"class":683},[669,1868,693],{"class":679},[669,1870,696],{"class":675},[669,1872,699],{"class":679},[669,1874,703],{"class":702},[669,1876,706],{"class":679},[669,1878,1879],{"class":671,"line":709},[669,1880,713],{"emptyLinePlaceholder":712},[669,1882,1883,1885,1887,1889,1891,1893,1895,1897,1899,1902,1904,1906,1909,1911,1913,1916,1918,1920,1923,1925,1927,1930,1932,1934],{"class":671,"line":716},[669,1884,619],{"class":683},[669,1886,638],{"class":679},[669,1888,641],{"class":719},[669,1890,723],{"class":683},[669,1892,1212],{"class":679},[669,1894,1381],{"class":732},[669,1896,736],{"class":679},[669,1898,699],{"class":679},[669,1900,1901],{"class":702},"cron_started",[669,1903,751],{"class":679},[669,1905,687],{"class":679},[669,1907,1908],{"class":732}," job",[669,1910,736],{"class":679},[669,1912,699],{"class":679},[669,1914,1915],{"class":702},"cleanup",[669,1917,751],{"class":679},[669,1919,687],{"class":679},[669,1921,1922],{"class":732}," schedule",[669,1924,736],{"class":679},[669,1926,699],{"class":679},[669,1928,1929],{"class":702},"0 *\u002F6 * * *",[669,1931,751],{"class":679},[669,1933,693],{"class":679},[669,1935,763],{"class":683},[669,1937,1938,1940,1942,1944,1946,1948,1950,1952,1954,1957,1959,1961,1963,1965,1967,1969,1971,1973,1976,1978,1980,1982,1985,1987,1990,1992],{"class":671,"line":729},[669,1939,619],{"class":683},[669,1941,638],{"class":679},[669,1943,641],{"class":719},[669,1945,723],{"class":683},[669,1947,1212],{"class":679},[669,1949,1381],{"class":732},[669,1951,736],{"class":679},[669,1953,699],{"class":679},[669,1955,1956],{"class":702},"cron_completed",[669,1958,751],{"class":679},[669,1960,687],{"class":679},[669,1962,1908],{"class":732},[669,1964,736],{"class":679},[669,1966,699],{"class":679},[669,1968,1915],{"class":702},[669,1970,751],{"class":679},[669,1972,687],{"class":679},[669,1974,1975],{"class":732}," deleted",[669,1977,736],{"class":679},[669,1979,1400],{"class":1122},[669,1981,687],{"class":679},[669,1983,1984],{"class":732}," duration",[669,1986,736],{"class":679},[669,1988,1989],{"class":1122}," 1200",[669,1991,693],{"class":679},[669,1993,763],{"class":683},[825,1995,1997],{"id":1996},"utility-functions","Utility Functions",[659,1999,2002],{"className":661,"code":2000,"filename":2001,"language":664,"meta":665,"style":665},"import { log } from 'evlog'\n\nfunction processWebhook(payload: WebhookPayload) {\n  log.info({ action: 'webhook_received', type: payload.type, source: payload.source })\n\n  if (!isValid(payload)) {\n    log.warn({ action: 'webhook_invalid', type: payload.type, reason: 'missing_signature' })\n    return\n  }\n}\n","src\u002Futils\u002Fwebhook.ts",[617,2003,2004,2022,2026,2052,2108,2112,2135,2189,2195,2201],{"__ignoreMap":665},[669,2005,2006,2008,2010,2012,2014,2016,2018,2020],{"class":671,"line":672},[669,2007,676],{"class":675},[669,2009,680],{"class":679},[669,2011,690],{"class":683},[669,2013,693],{"class":679},[669,2015,696],{"class":675},[669,2017,699],{"class":679},[669,2019,703],{"class":702},[669,2021,706],{"class":679},[669,2023,2024],{"class":671,"line":709},[669,2025,713],{"emptyLinePlaceholder":712},[669,2027,2028,2032,2035,2037,2041,2043,2046,2049],{"class":671,"line":716},[669,2029,2031],{"class":2030},"spNyl","function",[669,2033,2034],{"class":719}," processWebhook",[669,2036,723],{"class":679},[669,2038,2040],{"class":2039},"sHdIc","payload",[669,2042,736],{"class":679},[669,2044,2045],{"class":986}," WebhookPayload",[669,2047,2048],{"class":679},")",[669,2050,2051],{"class":679}," {\n",[669,2053,2054,2057,2059,2061,2063,2065,2067,2069,2071,2074,2076,2078,2081,2083,2086,2088,2091,2093,2095,2097,2099,2101,2104,2106],{"class":671,"line":729},[669,2055,2056],{"class":683},"  log",[669,2058,638],{"class":679},[669,2060,641],{"class":719},[669,2062,723],{"class":732},[669,2064,1212],{"class":679},[669,2066,1381],{"class":732},[669,2068,736],{"class":679},[669,2070,699],{"class":679},[669,2072,2073],{"class":702},"webhook_received",[669,2075,751],{"class":679},[669,2077,687],{"class":679},[669,2079,2080],{"class":732}," type",[669,2082,736],{"class":679},[669,2084,2085],{"class":683}," payload",[669,2087,638],{"class":679},[669,2089,2090],{"class":683},"type",[669,2092,687],{"class":679},[669,2094,1460],{"class":732},[669,2096,736],{"class":679},[669,2098,2085],{"class":683},[669,2100,638],{"class":679},[669,2102,2103],{"class":683},"source",[669,2105,693],{"class":679},[669,2107,763],{"class":732},[669,2109,2110],{"class":671,"line":757},[669,2111,713],{"emptyLinePlaceholder":712},[669,2113,2114,2117,2120,2123,2126,2128,2130,2133],{"class":671,"line":766},[669,2115,2116],{"class":675},"  if",[669,2118,2119],{"class":732}," (",[669,2121,2122],{"class":679},"!",[669,2124,2125],{"class":719},"isValid",[669,2127,723],{"class":732},[669,2129,2040],{"class":683},[669,2131,2132],{"class":732},")) ",[669,2134,726],{"class":679},[669,2136,2137,2140,2142,2144,2146,2148,2150,2152,2154,2157,2159,2161,2163,2165,2167,2169,2171,2173,2176,2178,2180,2183,2185,2187],{"class":671,"line":771},[669,2138,2139],{"class":683},"    log",[669,2141,638],{"class":679},[669,2143,895],{"class":719},[669,2145,723],{"class":732},[669,2147,1212],{"class":679},[669,2149,1381],{"class":732},[669,2151,736],{"class":679},[669,2153,699],{"class":679},[669,2155,2156],{"class":702},"webhook_invalid",[669,2158,751],{"class":679},[669,2160,687],{"class":679},[669,2162,2080],{"class":732},[669,2164,736],{"class":679},[669,2166,2085],{"class":683},[669,2168,638],{"class":679},[669,2170,2090],{"class":683},[669,2172,687],{"class":679},[669,2174,2175],{"class":732}," reason",[669,2177,736],{"class":679},[669,2179,699],{"class":679},[669,2181,2182],{"class":702},"missing_signature",[669,2184,751],{"class":679},[669,2186,693],{"class":679},[669,2188,763],{"class":732},[669,2190,2192],{"class":671,"line":2191},8,[669,2193,2194],{"class":675},"    return\n",[669,2196,2198],{"class":671,"line":2197},9,[669,2199,2200],{"class":679},"  }\n",[669,2202,2204],{"class":671,"line":2203},10,[669,2205,2206],{"class":679},"}\n",[652,2208,2210],{"id":2209},"send-these-logs-to-a-drain","Send these logs to a drain",[613,2212,2213,2214,2217],{},"When using the object form, events are sent through the ",[632,2215,2216],{"href":158},"drain pipeline"," just like wide events:",[659,2219,2221],{"className":661,"code":2220,"filename":663,"language":664,"meta":665,"style":665},"import { initLogger, log } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({\n  env: { service: 'my-app' },\n  drain: createAxiomDrain(),\n})\n\nlog.info({ action: 'deploy', version: '1.2.3', region: 'us-east-1' })\n",[617,2222,2223,2245,2265,2269,2277,2297,2312,2318,2322],{"__ignoreMap":665},[669,2224,2225,2227,2229,2231,2233,2235,2237,2239,2241,2243],{"class":671,"line":672},[669,2226,676],{"class":675},[669,2228,680],{"class":679},[669,2230,684],{"class":683},[669,2232,687],{"class":679},[669,2234,690],{"class":683},[669,2236,693],{"class":679},[669,2238,696],{"class":675},[669,2240,699],{"class":679},[669,2242,703],{"class":702},[669,2244,706],{"class":679},[669,2246,2247,2249,2251,2254,2256,2258,2260,2263],{"class":671,"line":709},[669,2248,676],{"class":675},[669,2250,680],{"class":679},[669,2252,2253],{"class":683}," createAxiomDrain",[669,2255,693],{"class":679},[669,2257,696],{"class":675},[669,2259,699],{"class":679},[669,2261,2262],{"class":702},"evlog\u002Faxiom",[669,2264,706],{"class":679},[669,2266,2267],{"class":671,"line":716},[669,2268,713],{"emptyLinePlaceholder":712},[669,2270,2271,2273,2275],{"class":671,"line":729},[669,2272,720],{"class":719},[669,2274,723],{"class":683},[669,2276,726],{"class":679},[669,2278,2279,2281,2283,2285,2287,2289,2291,2293,2295],{"class":671,"line":757},[669,2280,733],{"class":732},[669,2282,736],{"class":679},[669,2284,680],{"class":679},[669,2286,741],{"class":732},[669,2288,736],{"class":679},[669,2290,699],{"class":679},[669,2292,748],{"class":702},[669,2294,751],{"class":679},[669,2296,754],{"class":679},[669,2298,2299,2302,2304,2306,2309],{"class":671,"line":766},[669,2300,2301],{"class":732},"  drain",[669,2303,736],{"class":679},[669,2305,2253],{"class":719},[669,2307,2308],{"class":683},"()",[669,2310,2311],{"class":679},",\n",[669,2313,2314,2316],{"class":671,"line":771},[669,2315,760],{"class":679},[669,2317,763],{"class":683},[669,2319,2320],{"class":671,"line":2191},[669,2321,713],{"emptyLinePlaceholder":712},[669,2323,2324,2326,2328,2330,2332,2334,2336,2338,2340,2343,2345,2347,2350,2352,2354,2357,2359,2361,2364,2366,2368,2371,2373,2375],{"class":671,"line":2197},[669,2325,619],{"class":683},[669,2327,638],{"class":679},[669,2329,641],{"class":719},[669,2331,723],{"class":683},[669,2333,1212],{"class":679},[669,2335,1381],{"class":732},[669,2337,736],{"class":679},[669,2339,699],{"class":679},[669,2341,2342],{"class":702},"deploy",[669,2344,751],{"class":679},[669,2346,687],{"class":679},[669,2348,2349],{"class":732}," version",[669,2351,736],{"class":679},[669,2353,699],{"class":679},[669,2355,2356],{"class":702},"1.2.3",[669,2358,751],{"class":679},[669,2360,687],{"class":679},[669,2362,2363],{"class":732}," region",[669,2365,736],{"class":679},[669,2367,699],{"class":679},[669,2369,2370],{"class":702},"us-east-1",[669,2372,751],{"class":679},[669,2374,693],{"class":679},[669,2376,763],{"class":683},[652,2378,2380],{"id":2379},"migrating-from-console-pino-consola-winston","Migrating from console \u002F pino \u002F consola \u002F winston",[613,2382,2383,2384,2387,2388,2391],{},"Pick the tab matching your current logger to see the ",[647,2385,2386],{},"before"," call style. The ",[647,2389,2390],{},"after (evlog)"," snippet underneath is the same regardless of where you came from.",[2393,2394,2395,2613,2886,3072],"code-group",{},[659,2396,2399],{"className":661,"code":2397,"filename":2398,"language":664,"meta":665,"style":665},"import pino from 'pino'\n\nconst log = pino({ name: 'checkout' })\n\nlog.info({ event: 'checkout_started' })\nlog.info({ event: 'cart_loaded', items: 3, total: 9999 })\nlog.warn({ event: 'inventory_low', sku: 'SKU-42' })\nlog.error({ event: 'payment_failed', reason: 'card_declined' })\n","pino",[617,2400,2401,2417,2421,2455,2459,2487,2532,2573],{"__ignoreMap":665},[669,2402,2403,2405,2408,2411,2413,2415],{"class":671,"line":672},[669,2404,676],{"class":675},[669,2406,2407],{"class":683}," pino ",[669,2409,2410],{"class":675},"from",[669,2412,699],{"class":679},[669,2414,2398],{"class":702},[669,2416,706],{"class":679},[669,2418,2419],{"class":671,"line":709},[669,2420,713],{"emptyLinePlaceholder":712},[669,2422,2423,2426,2429,2432,2435,2437,2439,2442,2444,2446,2449,2451,2453],{"class":671,"line":716},[669,2424,2425],{"class":2030},"const",[669,2427,2428],{"class":683}," log ",[669,2430,2431],{"class":679},"=",[669,2433,2434],{"class":719}," pino",[669,2436,723],{"class":683},[669,2438,1212],{"class":679},[669,2440,2441],{"class":732}," name",[669,2443,736],{"class":679},[669,2445,699],{"class":679},[669,2447,2448],{"class":702},"checkout",[669,2450,751],{"class":679},[669,2452,693],{"class":679},[669,2454,763],{"class":683},[669,2456,2457],{"class":671,"line":729},[669,2458,713],{"emptyLinePlaceholder":712},[669,2460,2461,2463,2465,2467,2469,2471,2474,2476,2478,2481,2483,2485],{"class":671,"line":757},[669,2462,619],{"class":683},[669,2464,638],{"class":679},[669,2466,641],{"class":719},[669,2468,723],{"class":683},[669,2470,1212],{"class":679},[669,2472,2473],{"class":732}," event",[669,2475,736],{"class":679},[669,2477,699],{"class":679},[669,2479,2480],{"class":702},"checkout_started",[669,2482,751],{"class":679},[669,2484,693],{"class":679},[669,2486,763],{"class":683},[669,2488,2489,2491,2493,2495,2497,2499,2501,2503,2505,2508,2510,2512,2515,2517,2520,2522,2524,2526,2528,2530],{"class":671,"line":766},[669,2490,619],{"class":683},[669,2492,638],{"class":679},[669,2494,641],{"class":719},[669,2496,723],{"class":683},[669,2498,1212],{"class":679},[669,2500,2473],{"class":732},[669,2502,736],{"class":679},[669,2504,699],{"class":679},[669,2506,2507],{"class":702},"cart_loaded",[669,2509,751],{"class":679},[669,2511,687],{"class":679},[669,2513,2514],{"class":732}," items",[669,2516,736],{"class":679},[669,2518,2519],{"class":1122}," 3",[669,2521,687],{"class":679},[669,2523,1166],{"class":732},[669,2525,736],{"class":679},[669,2527,1171],{"class":1122},[669,2529,693],{"class":679},[669,2531,763],{"class":683},[669,2533,2534,2536,2538,2540,2542,2544,2546,2548,2550,2553,2555,2557,2560,2562,2564,2567,2569,2571],{"class":671,"line":771},[669,2535,619],{"class":683},[669,2537,638],{"class":679},[669,2539,895],{"class":719},[669,2541,723],{"class":683},[669,2543,1212],{"class":679},[669,2545,2473],{"class":732},[669,2547,736],{"class":679},[669,2549,699],{"class":679},[669,2551,2552],{"class":702},"inventory_low",[669,2554,751],{"class":679},[669,2556,687],{"class":679},[669,2558,2559],{"class":732}," sku",[669,2561,736],{"class":679},[669,2563,699],{"class":679},[669,2565,2566],{"class":702},"SKU-42",[669,2568,751],{"class":679},[669,2570,693],{"class":679},[669,2572,763],{"class":683},[669,2574,2575,2577,2579,2581,2583,2585,2587,2589,2591,2594,2596,2598,2600,2602,2604,2607,2609,2611],{"class":671,"line":2191},[669,2576,619],{"class":683},[669,2578,638],{"class":679},[669,2580,924],{"class":719},[669,2582,723],{"class":683},[669,2584,1212],{"class":679},[669,2586,2473],{"class":732},[669,2588,736],{"class":679},[669,2590,699],{"class":679},[669,2592,2593],{"class":702},"payment_failed",[669,2595,751],{"class":679},[669,2597,687],{"class":679},[669,2599,2175],{"class":732},[669,2601,736],{"class":679},[669,2603,699],{"class":679},[669,2605,2606],{"class":702},"card_declined",[669,2608,751],{"class":679},[669,2610,693],{"class":679},[669,2612,763],{"class":683},[659,2614,2617],{"className":661,"code":2615,"filename":2616,"language":664,"meta":665,"style":665},"import { createLogger, format, transports } from 'winston'\n\nconst log = createLogger({\n  defaultMeta: { service: 'checkout' },\n  format: format.json(),\n  transports: [new transports.Console()],\n})\n\nlog.info({ event: 'checkout_started' })\nlog.info({ event: 'cart_loaded', items: 3, total: 9999 })\nlog.warn({ event: 'inventory_low', sku: 'SKU-42' })\nlog.error({ event: 'payment_failed', reason: 'card_declined' })\n","winston",[617,2618,2619,2648,2652,2666,2687,2705,2730,2736,2740,2766,2808,2847],{"__ignoreMap":665},[669,2620,2621,2623,2625,2628,2630,2633,2635,2638,2640,2642,2644,2646],{"class":671,"line":672},[669,2622,676],{"class":675},[669,2624,680],{"class":679},[669,2626,2627],{"class":683}," createLogger",[669,2629,687],{"class":679},[669,2631,2632],{"class":683}," format",[669,2634,687],{"class":679},[669,2636,2637],{"class":683}," transports",[669,2639,693],{"class":679},[669,2641,696],{"class":675},[669,2643,699],{"class":679},[669,2645,2616],{"class":702},[669,2647,706],{"class":679},[669,2649,2650],{"class":671,"line":709},[669,2651,713],{"emptyLinePlaceholder":712},[669,2653,2654,2656,2658,2660,2662,2664],{"class":671,"line":716},[669,2655,2425],{"class":2030},[669,2657,2428],{"class":683},[669,2659,2431],{"class":679},[669,2661,2627],{"class":719},[669,2663,723],{"class":683},[669,2665,726],{"class":679},[669,2667,2668,2671,2673,2675,2677,2679,2681,2683,2685],{"class":671,"line":729},[669,2669,2670],{"class":732},"  defaultMeta",[669,2672,736],{"class":679},[669,2674,680],{"class":679},[669,2676,741],{"class":732},[669,2678,736],{"class":679},[669,2680,699],{"class":679},[669,2682,2448],{"class":702},[669,2684,751],{"class":679},[669,2686,754],{"class":679},[669,2688,2689,2692,2694,2696,2698,2701,2703],{"class":671,"line":757},[669,2690,2691],{"class":732},"  format",[669,2693,736],{"class":679},[669,2695,2632],{"class":683},[669,2697,638],{"class":679},[669,2699,2700],{"class":719},"json",[669,2702,2308],{"class":683},[669,2704,2311],{"class":679},[669,2706,2707,2710,2712,2715,2718,2720,2722,2725,2728],{"class":671,"line":766},[669,2708,2709],{"class":732},"  transports",[669,2711,736],{"class":679},[669,2713,2714],{"class":683}," [",[669,2716,2717],{"class":679},"new",[669,2719,2637],{"class":683},[669,2721,638],{"class":679},[669,2723,2724],{"class":719},"Console",[669,2726,2727],{"class":683},"()]",[669,2729,2311],{"class":679},[669,2731,2732,2734],{"class":671,"line":771},[669,2733,760],{"class":679},[669,2735,763],{"class":683},[669,2737,2738],{"class":671,"line":2191},[669,2739,713],{"emptyLinePlaceholder":712},[669,2741,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764],{"class":671,"line":2197},[669,2743,619],{"class":683},[669,2745,638],{"class":679},[669,2747,641],{"class":719},[669,2749,723],{"class":683},[669,2751,1212],{"class":679},[669,2753,2473],{"class":732},[669,2755,736],{"class":679},[669,2757,699],{"class":679},[669,2759,2480],{"class":702},[669,2761,751],{"class":679},[669,2763,693],{"class":679},[669,2765,763],{"class":683},[669,2767,2768,2770,2772,2774,2776,2778,2780,2782,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804,2806],{"class":671,"line":2203},[669,2769,619],{"class":683},[669,2771,638],{"class":679},[669,2773,641],{"class":719},[669,2775,723],{"class":683},[669,2777,1212],{"class":679},[669,2779,2473],{"class":732},[669,2781,736],{"class":679},[669,2783,699],{"class":679},[669,2785,2507],{"class":702},[669,2787,751],{"class":679},[669,2789,687],{"class":679},[669,2791,2514],{"class":732},[669,2793,736],{"class":679},[669,2795,2519],{"class":1122},[669,2797,687],{"class":679},[669,2799,1166],{"class":732},[669,2801,736],{"class":679},[669,2803,1171],{"class":1122},[669,2805,693],{"class":679},[669,2807,763],{"class":683},[669,2809,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845],{"class":671,"line":2810},11,[669,2812,619],{"class":683},[669,2814,638],{"class":679},[669,2816,895],{"class":719},[669,2818,723],{"class":683},[669,2820,1212],{"class":679},[669,2822,2473],{"class":732},[669,2824,736],{"class":679},[669,2826,699],{"class":679},[669,2828,2552],{"class":702},[669,2830,751],{"class":679},[669,2832,687],{"class":679},[669,2834,2559],{"class":732},[669,2836,736],{"class":679},[669,2838,699],{"class":679},[669,2840,2566],{"class":702},[669,2842,751],{"class":679},[669,2844,693],{"class":679},[669,2846,763],{"class":683},[669,2848,2850,2852,2854,2856,2858,2860,2862,2864,2866,2868,2870,2872,2874,2876,2878,2880,2882,2884],{"class":671,"line":2849},12,[669,2851,619],{"class":683},[669,2853,638],{"class":679},[669,2855,924],{"class":719},[669,2857,723],{"class":683},[669,2859,1212],{"class":679},[669,2861,2473],{"class":732},[669,2863,736],{"class":679},[669,2865,699],{"class":679},[669,2867,2593],{"class":702},[669,2869,751],{"class":679},[669,2871,687],{"class":679},[669,2873,2175],{"class":732},[669,2875,736],{"class":679},[669,2877,699],{"class":679},[669,2879,2606],{"class":702},[669,2881,751],{"class":679},[669,2883,693],{"class":679},[669,2885,763],{"class":683},[659,2887,2890],{"className":661,"code":2888,"filename":2889,"language":664,"meta":665,"style":665},"import { consola } from 'consola'\n\nconst log = consola.withTag('checkout')\n\nlog.info('Starting checkout')\nlog.info('cart loaded', { items: 3, total: 9999 })\nlog.warn('inventory low', { sku: 'SKU-42' })\nlog.error('payment failed', { reason: 'card_declined' })\n","consola",[617,2891,2892,2911,2915,2940,2944,2963,3002,3037],{"__ignoreMap":665},[669,2893,2894,2896,2898,2901,2903,2905,2907,2909],{"class":671,"line":672},[669,2895,676],{"class":675},[669,2897,680],{"class":679},[669,2899,2900],{"class":683}," consola",[669,2902,693],{"class":679},[669,2904,696],{"class":675},[669,2906,699],{"class":679},[669,2908,2889],{"class":702},[669,2910,706],{"class":679},[669,2912,2913],{"class":671,"line":709},[669,2914,713],{"emptyLinePlaceholder":712},[669,2916,2917,2919,2921,2923,2925,2927,2930,2932,2934,2936,2938],{"class":671,"line":716},[669,2918,2425],{"class":2030},[669,2920,2428],{"class":683},[669,2922,2431],{"class":679},[669,2924,2900],{"class":683},[669,2926,638],{"class":679},[669,2928,2929],{"class":719},"withTag",[669,2931,723],{"class":683},[669,2933,751],{"class":679},[669,2935,2448],{"class":702},[669,2937,751],{"class":679},[669,2939,763],{"class":683},[669,2941,2942],{"class":671,"line":729},[669,2943,713],{"emptyLinePlaceholder":712},[669,2945,2946,2948,2950,2952,2954,2956,2959,2961],{"class":671,"line":757},[669,2947,619],{"class":683},[669,2949,638],{"class":679},[669,2951,641],{"class":719},[669,2953,723],{"class":683},[669,2955,751],{"class":679},[669,2957,2958],{"class":702},"Starting checkout",[669,2960,751],{"class":679},[669,2962,763],{"class":683},[669,2964,2965,2967,2969,2971,2973,2975,2978,2980,2982,2984,2986,2988,2990,2992,2994,2996,2998,3000],{"class":671,"line":766},[669,2966,619],{"class":683},[669,2968,638],{"class":679},[669,2970,641],{"class":719},[669,2972,723],{"class":683},[669,2974,751],{"class":679},[669,2976,2977],{"class":702},"cart loaded",[669,2979,751],{"class":679},[669,2981,687],{"class":679},[669,2983,680],{"class":679},[669,2985,2514],{"class":732},[669,2987,736],{"class":679},[669,2989,2519],{"class":1122},[669,2991,687],{"class":679},[669,2993,1166],{"class":732},[669,2995,736],{"class":679},[669,2997,1171],{"class":1122},[669,2999,693],{"class":679},[669,3001,763],{"class":683},[669,3003,3004,3006,3008,3010,3012,3014,3017,3019,3021,3023,3025,3027,3029,3031,3033,3035],{"class":671,"line":771},[669,3005,619],{"class":683},[669,3007,638],{"class":679},[669,3009,895],{"class":719},[669,3011,723],{"class":683},[669,3013,751],{"class":679},[669,3015,3016],{"class":702},"inventory low",[669,3018,751],{"class":679},[669,3020,687],{"class":679},[669,3022,680],{"class":679},[669,3024,2559],{"class":732},[669,3026,736],{"class":679},[669,3028,699],{"class":679},[669,3030,2566],{"class":702},[669,3032,751],{"class":679},[669,3034,693],{"class":679},[669,3036,763],{"class":683},[669,3038,3039,3041,3043,3045,3047,3049,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070],{"class":671,"line":2191},[669,3040,619],{"class":683},[669,3042,638],{"class":679},[669,3044,924],{"class":719},[669,3046,723],{"class":683},[669,3048,751],{"class":679},[669,3050,3051],{"class":702},"payment failed",[669,3053,751],{"class":679},[669,3055,687],{"class":679},[669,3057,680],{"class":679},[669,3059,2175],{"class":732},[669,3061,736],{"class":679},[669,3063,699],{"class":679},[669,3065,2606],{"class":702},[669,3067,751],{"class":679},[669,3069,693],{"class":679},[669,3071,763],{"class":683},[659,3073,3075],{"className":661,"code":3074,"filename":623,"language":664,"meta":665,"style":665},"console.log('[checkout] Starting checkout')\nconsole.log('[checkout] cart loaded', { items: 3, total: 9999 })\nconsole.warn('[checkout] inventory low', { sku: 'SKU-42' })\nconsole.error('[checkout] payment failed', { reason: 'card_declined' })\n",[617,3076,3077,3097,3136,3171],{"__ignoreMap":665},[669,3078,3079,3082,3084,3086,3088,3090,3093,3095],{"class":671,"line":672},[669,3080,3081],{"class":683},"console",[669,3083,638],{"class":679},[669,3085,619],{"class":719},[669,3087,723],{"class":683},[669,3089,751],{"class":679},[669,3091,3092],{"class":702},"[checkout] Starting checkout",[669,3094,751],{"class":679},[669,3096,763],{"class":683},[669,3098,3099,3101,3103,3105,3107,3109,3112,3114,3116,3118,3120,3122,3124,3126,3128,3130,3132,3134],{"class":671,"line":709},[669,3100,3081],{"class":683},[669,3102,638],{"class":679},[669,3104,619],{"class":719},[669,3106,723],{"class":683},[669,3108,751],{"class":679},[669,3110,3111],{"class":702},"[checkout] cart loaded",[669,3113,751],{"class":679},[669,3115,687],{"class":679},[669,3117,680],{"class":679},[669,3119,2514],{"class":732},[669,3121,736],{"class":679},[669,3123,2519],{"class":1122},[669,3125,687],{"class":679},[669,3127,1166],{"class":732},[669,3129,736],{"class":679},[669,3131,1171],{"class":1122},[669,3133,693],{"class":679},[669,3135,763],{"class":683},[669,3137,3138,3140,3142,3144,3146,3148,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169],{"class":671,"line":716},[669,3139,3081],{"class":683},[669,3141,638],{"class":679},[669,3143,895],{"class":719},[669,3145,723],{"class":683},[669,3147,751],{"class":679},[669,3149,3150],{"class":702},"[checkout] inventory low",[669,3152,751],{"class":679},[669,3154,687],{"class":679},[669,3156,680],{"class":679},[669,3158,2559],{"class":732},[669,3160,736],{"class":679},[669,3162,699],{"class":679},[669,3164,2566],{"class":702},[669,3166,751],{"class":679},[669,3168,693],{"class":679},[669,3170,763],{"class":683},[669,3172,3173,3175,3177,3179,3181,3183,3186,3188,3190,3192,3194,3196,3198,3200,3202,3204],{"class":671,"line":729},[669,3174,3081],{"class":683},[669,3176,638],{"class":679},[669,3178,924],{"class":719},[669,3180,723],{"class":683},[669,3182,751],{"class":679},[669,3184,3185],{"class":702},"[checkout] payment failed",[669,3187,751],{"class":679},[669,3189,687],{"class":679},[669,3191,680],{"class":679},[669,3193,2175],{"class":732},[669,3195,736],{"class":679},[669,3197,699],{"class":679},[669,3199,2606],{"class":702},[669,3201,751],{"class":679},[669,3203,693],{"class":679},[669,3205,763],{"class":683},[613,3207,3208],{},"All four become this, with no formatter, transport, or peer-dep wiring:",[659,3210,3213],{"className":661,"code":3211,"filename":3212,"language":664,"meta":665,"style":665},"import { initLogger, log } from 'evlog'\n\ninitLogger({ env: { service: 'checkout' } })\n\nlog.info({ event: 'checkout_started' })\nlog.info({ event: 'cart_loaded', items: 3, total: 9999 })\nlog.warn({ event: 'inventory_low', sku: 'SKU-42' })\nlog.error({ event: 'payment_failed', reason: 'card_declined' })\n","After (evlog)",[617,3214,3215,3237,3241,3272,3276,3302,3344,3382],{"__ignoreMap":665},[669,3216,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235],{"class":671,"line":672},[669,3218,676],{"class":675},[669,3220,680],{"class":679},[669,3222,684],{"class":683},[669,3224,687],{"class":679},[669,3226,690],{"class":683},[669,3228,693],{"class":679},[669,3230,696],{"class":675},[669,3232,699],{"class":679},[669,3234,703],{"class":702},[669,3236,706],{"class":679},[669,3238,3239],{"class":671,"line":709},[669,3240,713],{"emptyLinePlaceholder":712},[669,3242,3243,3245,3247,3249,3252,3254,3256,3258,3260,3262,3264,3266,3268,3270],{"class":671,"line":716},[669,3244,720],{"class":719},[669,3246,723],{"class":683},[669,3248,1212],{"class":679},[669,3250,3251],{"class":732}," env",[669,3253,736],{"class":679},[669,3255,680],{"class":679},[669,3257,741],{"class":732},[669,3259,736],{"class":679},[669,3261,699],{"class":679},[669,3263,2448],{"class":702},[669,3265,751],{"class":679},[669,3267,693],{"class":679},[669,3269,693],{"class":679},[669,3271,763],{"class":683},[669,3273,3274],{"class":671,"line":729},[669,3275,713],{"emptyLinePlaceholder":712},[669,3277,3278,3280,3282,3284,3286,3288,3290,3292,3294,3296,3298,3300],{"class":671,"line":757},[669,3279,619],{"class":683},[669,3281,638],{"class":679},[669,3283,641],{"class":719},[669,3285,723],{"class":683},[669,3287,1212],{"class":679},[669,3289,2473],{"class":732},[669,3291,736],{"class":679},[669,3293,699],{"class":679},[669,3295,2480],{"class":702},[669,3297,751],{"class":679},[669,3299,693],{"class":679},[669,3301,763],{"class":683},[669,3303,3304,3306,3308,3310,3312,3314,3316,3318,3320,3322,3324,3326,3328,3330,3332,3334,3336,3338,3340,3342],{"class":671,"line":766},[669,3305,619],{"class":683},[669,3307,638],{"class":679},[669,3309,641],{"class":719},[669,3311,723],{"class":683},[669,3313,1212],{"class":679},[669,3315,2473],{"class":732},[669,3317,736],{"class":679},[669,3319,699],{"class":679},[669,3321,2507],{"class":702},[669,3323,751],{"class":679},[669,3325,687],{"class":679},[669,3327,2514],{"class":732},[669,3329,736],{"class":679},[669,3331,2519],{"class":1122},[669,3333,687],{"class":679},[669,3335,1166],{"class":732},[669,3337,736],{"class":679},[669,3339,1171],{"class":1122},[669,3341,693],{"class":679},[669,3343,763],{"class":683},[669,3345,3346,3348,3350,3352,3354,3356,3358,3360,3362,3364,3366,3368,3370,3372,3374,3376,3378,3380],{"class":671,"line":771},[669,3347,619],{"class":683},[669,3349,638],{"class":679},[669,3351,895],{"class":719},[669,3353,723],{"class":683},[669,3355,1212],{"class":679},[669,3357,2473],{"class":732},[669,3359,736],{"class":679},[669,3361,699],{"class":679},[669,3363,2552],{"class":702},[669,3365,751],{"class":679},[669,3367,687],{"class":679},[669,3369,2559],{"class":732},[669,3371,736],{"class":679},[669,3373,699],{"class":679},[669,3375,2566],{"class":702},[669,3377,751],{"class":679},[669,3379,693],{"class":679},[669,3381,763],{"class":683},[669,3383,3384,3386,3388,3390,3392,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3414,3416,3418],{"class":671,"line":2191},[669,3385,619],{"class":683},[669,3387,638],{"class":679},[669,3389,924],{"class":719},[669,3391,723],{"class":683},[669,3393,1212],{"class":679},[669,3395,2473],{"class":732},[669,3397,736],{"class":679},[669,3399,699],{"class":679},[669,3401,2593],{"class":702},[669,3403,751],{"class":679},[669,3405,687],{"class":679},[669,3407,2175],{"class":732},[669,3409,736],{"class":679},[669,3411,699],{"class":679},[669,3413,2606],{"class":702},[669,3415,751],{"class":679},[669,3417,693],{"class":679},[669,3419,763],{"class":683},[613,3421,3422,3424,3425,3428],{},[617,3423,720],{}," is one line at boot. The drain, redaction, sampling, pretty\u002FJSON switching, and level filtering are all wired by default: no ",[617,3426,3427],{},"pino-pretty"," peer dep, no winston transport assembly, no consola reporter setup.",[613,3430,3431,3432,3435,3436,3438],{},"If you want the drop-in feel of ",[617,3433,3434],{},"import pino from 'pino'"," while you evaluate evlog, the default export is the same ",[617,3437,619],{}," API with no setup line:",[659,3440,3442],{"className":661,"code":3441,"filename":663,"language":664,"meta":665,"style":665},"import logger from 'evlog'\n\nlogger.info('checkout', 'Starting checkout')\nlogger.info({ event: 'checkout_started' })\n",[617,3443,3444,3459,3463,3490],{"__ignoreMap":665},[669,3445,3446,3448,3451,3453,3455,3457],{"class":671,"line":672},[669,3447,676],{"class":675},[669,3449,3450],{"class":683}," logger ",[669,3452,2410],{"class":675},[669,3454,699],{"class":679},[669,3456,703],{"class":702},[669,3458,706],{"class":679},[669,3460,3461],{"class":671,"line":709},[669,3462,713],{"emptyLinePlaceholder":712},[669,3464,3465,3468,3470,3472,3474,3476,3478,3480,3482,3484,3486,3488],{"class":671,"line":716},[669,3466,3467],{"class":683},"logger",[669,3469,638],{"class":679},[669,3471,641],{"class":719},[669,3473,723],{"class":683},[669,3475,751],{"class":679},[669,3477,2448],{"class":702},[669,3479,751],{"class":679},[669,3481,687],{"class":679},[669,3483,699],{"class":679},[669,3485,2958],{"class":702},[669,3487,751],{"class":679},[669,3489,763],{"class":683},[669,3491,3492,3494,3496,3498,3500,3502,3504,3506,3508,3510,3512,3514],{"class":671,"line":729},[669,3493,3467],{"class":683},[669,3495,638],{"class":679},[669,3497,641],{"class":719},[669,3499,723],{"class":683},[669,3501,1212],{"class":679},[669,3503,2473],{"class":732},[669,3505,736],{"class":679},[669,3507,699],{"class":679},[669,3509,2480],{"class":702},[669,3511,751],{"class":679},[669,3513,693],{"class":679},[669,3515,763],{"class":683},[613,3517,3518,3519,3521,3522,3524],{},"Every call prints immediately. Once you want a drain, redaction, or wide events, add the ",[617,3520,720],{}," line and keep calling the same methods; the default import and ",[617,3523,619],{}," are the same object, so nothing else moves.",[626,3526,3528,3529,638],{"color":628,"icon":3527},"i-lucide-arrow-right","Want the full side-by-side (feature comparison tables, honest gaps, per-feature mapping)? See ",[632,3530,3531],{"href":570},"evlog vs pino, winston, consola",[652,3533,3535],{"id":3534},"pairing-with-wide-events","Pairing with wide events",[613,3537,3538,635,3540,3543,3544,3547,3548,3550],{},[617,3539,619],{},[617,3541,3542],{},"createLogger"," live inside the same logger. Use ",[617,3545,3546],{},"log.*"," for events that stand alone (startup messages, ad-hoc warnings, debug traces) and reach for ",[617,3549,3542],{}," when you want one event that captures an entire operation. They share the global drain, redaction, and types, so pick per call.",[659,3552,3555],{"className":661,"code":3553,"filename":3554,"language":664,"meta":665,"style":665},"import { initLogger, log, createLogger } from 'evlog'\n\ninitLogger({ env: { service: 'sync-worker' } })\n\nlog.info('sync', 'Worker starting')\n\nconst run = createLogger({ source: 'postgres', target: 's3' })\ntry {\n  const records = await fetchRecords()\n  run.set({ found: records.length })\n\n  for (const record of records) {\n    await syncOne(record)\n    log.debug({ event: 'record_synced', id: record.id })\n  }\n\n  run.set({ status: 'complete', synced: records.length })\n} catch (err) {\n  log.error({ event: 'sync_failed' })\n  run.error(err as Error)\n  throw err\n} finally {\n  run.emit()\n}\n\nlog.info('sync', 'Worker finished')\n","scripts\u002Fsync-data.ts",[617,3556,3557,3583,3587,3618,3622,3650,3654,3695,3702,3722,3752,3756,3777,3793,3835,3840,3845,3887,3900,3927,3949,3958,3968,3980,3985,3990],{"__ignoreMap":665},[669,3558,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581],{"class":671,"line":672},[669,3560,676],{"class":675},[669,3562,680],{"class":679},[669,3564,684],{"class":683},[669,3566,687],{"class":679},[669,3568,690],{"class":683},[669,3570,687],{"class":679},[669,3572,2627],{"class":683},[669,3574,693],{"class":679},[669,3576,696],{"class":675},[669,3578,699],{"class":679},[669,3580,703],{"class":702},[669,3582,706],{"class":679},[669,3584,3585],{"class":671,"line":709},[669,3586,713],{"emptyLinePlaceholder":712},[669,3588,3589,3591,3593,3595,3597,3599,3601,3603,3605,3607,3610,3612,3614,3616],{"class":671,"line":716},[669,3590,720],{"class":719},[669,3592,723],{"class":683},[669,3594,1212],{"class":679},[669,3596,3251],{"class":732},[669,3598,736],{"class":679},[669,3600,680],{"class":679},[669,3602,741],{"class":732},[669,3604,736],{"class":679},[669,3606,699],{"class":679},[669,3608,3609],{"class":702},"sync-worker",[669,3611,751],{"class":679},[669,3613,693],{"class":679},[669,3615,693],{"class":679},[669,3617,763],{"class":683},[669,3619,3620],{"class":671,"line":729},[669,3621,713],{"emptyLinePlaceholder":712},[669,3623,3624,3626,3628,3630,3632,3634,3637,3639,3641,3643,3646,3648],{"class":671,"line":757},[669,3625,619],{"class":683},[669,3627,638],{"class":679},[669,3629,641],{"class":719},[669,3631,723],{"class":683},[669,3633,751],{"class":679},[669,3635,3636],{"class":702},"sync",[669,3638,751],{"class":679},[669,3640,687],{"class":679},[669,3642,699],{"class":679},[669,3644,3645],{"class":702},"Worker starting",[669,3647,751],{"class":679},[669,3649,763],{"class":683},[669,3651,3652],{"class":671,"line":766},[669,3653,713],{"emptyLinePlaceholder":712},[669,3655,3656,3658,3661,3663,3665,3667,3669,3671,3673,3675,3677,3679,3681,3683,3685,3687,3689,3691,3693],{"class":671,"line":771},[669,3657,2425],{"class":2030},[669,3659,3660],{"class":683}," run ",[669,3662,2431],{"class":679},[669,3664,2627],{"class":719},[669,3666,723],{"class":683},[669,3668,1212],{"class":679},[669,3670,1460],{"class":732},[669,3672,736],{"class":679},[669,3674,699],{"class":679},[669,3676,1467],{"class":702},[669,3678,751],{"class":679},[669,3680,687],{"class":679},[669,3682,1474],{"class":732},[669,3684,736],{"class":679},[669,3686,699],{"class":679},[669,3688,1481],{"class":702},[669,3690,751],{"class":679},[669,3692,693],{"class":679},[669,3694,763],{"class":683},[669,3696,3697,3700],{"class":671,"line":2191},[669,3698,3699],{"class":675},"try",[669,3701,2051],{"class":679},[669,3703,3704,3707,3710,3713,3716,3719],{"class":671,"line":2197},[669,3705,3706],{"class":2030},"  const",[669,3708,3709],{"class":683}," records",[669,3711,3712],{"class":679}," =",[669,3714,3715],{"class":675}," await",[669,3717,3718],{"class":719}," fetchRecords",[669,3720,3721],{"class":732},"()\n",[669,3723,3724,3727,3729,3732,3734,3736,3739,3741,3743,3745,3748,3750],{"class":671,"line":2203},[669,3725,3726],{"class":683},"  run",[669,3728,638],{"class":679},[669,3730,3731],{"class":719},"set",[669,3733,723],{"class":732},[669,3735,1212],{"class":679},[669,3737,3738],{"class":732}," found",[669,3740,736],{"class":679},[669,3742,3709],{"class":683},[669,3744,638],{"class":679},[669,3746,3747],{"class":683},"length",[669,3749,693],{"class":679},[669,3751,763],{"class":732},[669,3753,3754],{"class":671,"line":2810},[669,3755,713],{"emptyLinePlaceholder":712},[669,3757,3758,3761,3763,3765,3768,3771,3773,3775],{"class":671,"line":2849},[669,3759,3760],{"class":675},"  for",[669,3762,2119],{"class":732},[669,3764,2425],{"class":2030},[669,3766,3767],{"class":683}," record",[669,3769,3770],{"class":679}," of",[669,3772,3709],{"class":683},[669,3774,1260],{"class":732},[669,3776,726],{"class":679},[669,3778,3780,3783,3786,3788,3791],{"class":671,"line":3779},13,[669,3781,3782],{"class":675},"    await",[669,3784,3785],{"class":719}," syncOne",[669,3787,723],{"class":732},[669,3789,3790],{"class":683},"record",[669,3792,763],{"class":732},[669,3794,3796,3798,3800,3802,3804,3806,3808,3810,3812,3815,3817,3819,3822,3824,3826,3828,3831,3833],{"class":671,"line":3795},14,[669,3797,2139],{"class":683},[669,3799,638],{"class":679},[669,3801,953],{"class":719},[669,3803,723],{"class":732},[669,3805,1212],{"class":679},[669,3807,2473],{"class":732},[669,3809,736],{"class":679},[669,3811,699],{"class":679},[669,3813,3814],{"class":702},"record_synced",[669,3816,751],{"class":679},[669,3818,687],{"class":679},[669,3820,3821],{"class":732}," id",[669,3823,736],{"class":679},[669,3825,3767],{"class":683},[669,3827,638],{"class":679},[669,3829,3830],{"class":683},"id",[669,3832,693],{"class":679},[669,3834,763],{"class":732},[669,3836,3838],{"class":671,"line":3837},15,[669,3839,2200],{"class":679},[669,3841,3843],{"class":671,"line":3842},16,[669,3844,713],{"emptyLinePlaceholder":712},[669,3846,3848,3850,3852,3854,3856,3858,3861,3863,3865,3868,3870,3872,3875,3877,3879,3881,3883,3885],{"class":671,"line":3847},17,[669,3849,3726],{"class":683},[669,3851,638],{"class":679},[669,3853,3731],{"class":719},[669,3855,723],{"class":732},[669,3857,1212],{"class":679},[669,3859,3860],{"class":732}," status",[669,3862,736],{"class":679},[669,3864,699],{"class":679},[669,3866,3867],{"class":702},"complete",[669,3869,751],{"class":679},[669,3871,687],{"class":679},[669,3873,3874],{"class":732}," synced",[669,3876,736],{"class":679},[669,3878,3709],{"class":683},[669,3880,638],{"class":679},[669,3882,3747],{"class":683},[669,3884,693],{"class":679},[669,3886,763],{"class":732},[669,3888,3890,3892,3895,3898],{"class":671,"line":3889},18,[669,3891,760],{"class":679},[669,3893,3894],{"class":675}," catch",[669,3896,3897],{"class":683}," (err) ",[669,3899,726],{"class":679},[669,3901,3903,3905,3907,3909,3911,3913,3915,3917,3919,3921,3923,3925],{"class":671,"line":3902},19,[669,3904,2056],{"class":683},[669,3906,638],{"class":679},[669,3908,924],{"class":719},[669,3910,723],{"class":732},[669,3912,1212],{"class":679},[669,3914,2473],{"class":732},[669,3916,736],{"class":679},[669,3918,699],{"class":679},[669,3920,1453],{"class":702},[669,3922,751],{"class":679},[669,3924,693],{"class":679},[669,3926,763],{"class":732},[669,3928,3930,3932,3934,3936,3938,3941,3944,3947],{"class":671,"line":3929},20,[669,3931,3726],{"class":683},[669,3933,638],{"class":679},[669,3935,924],{"class":719},[669,3937,723],{"class":732},[669,3939,3940],{"class":683},"err",[669,3942,3943],{"class":675}," as",[669,3945,3946],{"class":986}," Error",[669,3948,763],{"class":732},[669,3950,3952,3955],{"class":671,"line":3951},21,[669,3953,3954],{"class":675},"  throw",[669,3956,3957],{"class":683}," err\n",[669,3959,3961,3963,3966],{"class":671,"line":3960},22,[669,3962,760],{"class":679},[669,3964,3965],{"class":675}," finally",[669,3967,2051],{"class":679},[669,3969,3971,3973,3975,3978],{"class":671,"line":3970},23,[669,3972,3726],{"class":683},[669,3974,638],{"class":679},[669,3976,3977],{"class":719},"emit",[669,3979,3721],{"class":732},[669,3981,3983],{"class":671,"line":3982},24,[669,3984,2206],{"class":679},[669,3986,3988],{"class":671,"line":3987},25,[669,3989,713],{"emptyLinePlaceholder":712},[669,3991,3993,3995,3997,3999,4001,4003,4005,4007,4009,4011,4014,4016],{"class":671,"line":3992},26,[669,3994,619],{"class":683},[669,3996,638],{"class":679},[669,3998,641],{"class":719},[669,4000,723],{"class":683},[669,4002,751],{"class":679},[669,4004,3636],{"class":702},[669,4006,751],{"class":679},[669,4008,687],{"class":679},[669,4010,699],{"class":679},[669,4012,4013],{"class":702},"Worker finished",[669,4015,751],{"class":679},[669,4017,763],{"class":683},[613,4019,615,4020,4022,4023,4025],{},[617,4021,3546],{}," calls give you a real-time trail in development; the ",[617,4024,3542],{}," block gives your dashboard one queryable row per run. Both go through the same drain.",[652,4027,4029],{"id":4028},"next-steps","Next Steps",[4031,4032,4033,4039,4054,4062,4067,4072],"ul",{},[4034,4035,4036,4038],"li",{},[632,4037,51],{"href":52},": Accumulate context and emit comprehensive events",[4034,4040,4041,4043,4044,1034,4047,4050,4051],{},[632,4042,56],{"href":57},": Throw errors with ",[617,4045,4046],{},"why",[617,4048,4049],{},"fix",", and ",[617,4052,4053],{},"link",[4034,4055,4056,4058,4059,4061],{},[632,4057,552],{"href":553},": All ",[617,4060,720],{}," options",[4034,4063,4064,4066],{},[632,4065,153],{"href":158},": Send events to Axiom, Sentry, PostHog, and more",[4034,4068,4069,4071],{},[632,4070,634],{"href":306},": Scripts, workers, and libraries without a web framework",[4034,4073,4074,4077],{},[632,4075,4076],{"href":570},"evlog vs other loggers",": Side-by-side with pino, winston, consola",[4079,4080,4081],"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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .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}",{"title":665,"searchDepth":709,"depth":709,"links":4083},[4084,4085,4090,4091,4096,4097,4098,4099],{"id":654,"depth":709,"text":431},{"id":822,"depth":709,"text":823,"children":4086},[4087,4088,4089],{"id":827,"depth":716,"text":828},{"id":1026,"depth":716,"text":1027},{"id":1335,"depth":716,"text":1336},{"id":1571,"depth":709,"text":1572},{"id":1697,"depth":709,"text":1698,"children":4092},[4093,4094,4095],{"id":1701,"depth":716,"text":1702},{"id":1851,"depth":716,"text":1852},{"id":1996,"depth":716,"text":1997},{"id":2209,"depth":709,"text":2210},{"id":2379,"depth":709,"text":2380},{"id":3534,"depth":709,"text":3535},{"id":4028,"depth":709,"text":4029},"Use evlog for individual structured messages, with the same drains and redaction as wide events, and adapt existing logger call sites.","md",[4103,4105],{"label":51,"icon":54,"to":52,"color":628,"variant":4104},"subtle",{"label":552,"icon":555,"to":553,"color":628,"variant":4104},{},{"icon":49},{"title":46,"description":4100},"NQV4S1uA1PiCPvQVgY4lI17C55wJcE5OX02H_fwf6sY",[4111,4113],{"title":41,"path":42,"stem":43,"description":4112,"icon":44,"children":-1},"The mental model: three logging modes, the wide event lifecycle, sampling, typed fields, and redaction. Read it in order if you are new.",{"title":51,"path":52,"stem":53,"description":4114,"icon":54,"children":-1},"Accumulate context over any unit of work and emit a single comprehensive event. Works for HTTP requests, scripts, background jobs, queue workers, and workflows.",1791240218094]