[{"data":1,"prerenderedAt":2065},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-structured-logging-nodejs":607,"-use-cases-structured-logging-nodejs-surround":2060},[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":2049,"extension":2050,"links":2051,"meta":2056,"navigation":2057,"path":456,"seo":2058,"stem":457,"__hash__":2059},"docs\u002F5.use-cases\u002F6.structured-logging-nodejs.md","Structured Logging in Node.js",{"type":611,"value":612,"toc":2044},"minimark",[613,617,625,630,633,669,680,1714,1717,1756,1760,1770,1978,1993,1997,2004,2010,2016,2030,2040],[614,615,616],"p",{},"A checkout fails. You have the request ID from the client. Your logs should let you find the payment amount, the outcome, and the reason for the decline together.",[614,618,619,620,624],{},"Build a small Node.js HTTP server that records those details in one JSON ",[621,622,623],"a",{"href":52},"wide event"," per request. You will run a successful checkout and a declined payment, then match each response to its log. The example uses Node’s built-in HTTP server so you can see the full logging lifecycle.",[626,627,629],"h2",{"id":628},"run-a-complete-http-handler","Run a complete HTTP handler",[614,631,632],{},"Install evlog, then save the server below. It uses the Node.js HTTP server and no framework. Node.js 24 can run this TypeScript file directly:",[634,635,641],"pre",{"className":636,"code":637,"filename":638,"language":639,"meta":640,"style":640},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install evlog\nnode server.ts\n","Terminal","bash","",[642,643,644,660],"code",{"__ignoreMap":640},[645,646,649,653,657],"span",{"class":647,"line":648},"line",1,[645,650,652],{"class":651},"sBMFI","npm",[645,654,656],{"class":655},"sfazB"," install",[645,658,659],{"class":655}," evlog\n",[645,661,663,666],{"class":647,"line":662},2,[645,664,665],{"class":651},"node",[645,667,668],{"class":655}," server.ts\n",[614,670,671,672,675,676,679],{},"The ",[642,673,674],{},"\u002Fcheckout"," route simulates a successful payment. Add ",[642,677,678],{},"?decline=1"," to exercise the error path. The payment IDs are fixture data, so no payment provider or credentials are needed.",[634,681,686],{"className":682,"code":683,"filename":684,"language":685,"meta":640,"style":640},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { randomUUID } from 'node:crypto'\nimport { createServer } from 'node:http'\nimport { createError, createLogger, initLogger } from 'evlog'\n\ninitLogger({ env: { service: 'checkout' }, pretty: false })\n\ncreateServer((req, res) => {\n  const url = new URL(req.url ?? '\u002F', 'http:\u002F\u002Flocalhost')\n  const requestId = randomUUID()\n  const log = createLogger({ requestId, method: req.method, path: url.pathname })\n  res.setHeader('x-request-id', requestId)\n  res.setHeader('content-type', 'application\u002Fjson')\n\n  try {\n    if (req.method !== 'POST' || url.pathname !== '\u002Fcheckout') {\n      res.statusCode = 404\n      log.set({ outcome: 'not-found' })\n      res.end(JSON.stringify({ error: 'Not found', requestId }))\n      return\n    }\n\n    log.set({ orderId: 'order-123', payment: { amount: 2999, currency: 'EUR' } })\n    if (url.searchParams.get('decline') === '1') {\n      throw createError({\n        message: 'Payment declined',\n        status: 402,\n        why: 'The simulated card has insufficient funds',\n        fix: 'Try another payment method',\n      })\n    }\n\n    log.set({ payment: { chargeId: 'ch_123' }, outcome: 'paid' })\n    res.statusCode = 200\n    res.end(JSON.stringify({ orderId: 'order-123', requestId }))\n  } catch (error) {\n    log.error(error instanceof Error ? error : new Error(String(error)))\n    log.set({ outcome: 'declined' })\n    res.statusCode = 402\n    res.end(JSON.stringify({ error: 'Payment declined', requestId }))\n  } finally {\n    log.emit({ status: res.statusCode })\n  }\n}).listen(3000)\n","server.ts","typescript",[642,687,688,717,737,769,776,828,833,862,911,926,977,1003,1032,1037,1045,1093,1110,1141,1186,1192,1198,1203,1266,1310,1322,1340,1353,1370,1387,1395,1400,1405,1453,1468,1507,1525,1568,1596,1610,1649,1659,1688,1694],{"__ignoreMap":640},[645,689,690,694,698,702,705,708,711,714],{"class":647,"line":648},[645,691,693],{"class":692},"s7zQu","import",[645,695,697],{"class":696},"sMK4o"," {",[645,699,701],{"class":700},"sTEyZ"," randomUUID",[645,703,704],{"class":696}," }",[645,706,707],{"class":692}," from",[645,709,710],{"class":696}," '",[645,712,713],{"class":655},"node:crypto",[645,715,716],{"class":696},"'\n",[645,718,719,721,723,726,728,730,732,735],{"class":647,"line":662},[645,720,693],{"class":692},[645,722,697],{"class":696},[645,724,725],{"class":700}," createServer",[645,727,704],{"class":696},[645,729,707],{"class":692},[645,731,710],{"class":696},[645,733,734],{"class":655},"node:http",[645,736,716],{"class":696},[645,738,740,742,744,747,750,753,755,758,760,762,764,767],{"class":647,"line":739},3,[645,741,693],{"class":692},[645,743,697],{"class":696},[645,745,746],{"class":700}," createError",[645,748,749],{"class":696},",",[645,751,752],{"class":700}," createLogger",[645,754,749],{"class":696},[645,756,757],{"class":700}," initLogger",[645,759,704],{"class":696},[645,761,707],{"class":692},[645,763,710],{"class":696},[645,765,766],{"class":655},"evlog",[645,768,716],{"class":696},[645,770,772],{"class":647,"line":771},4,[645,773,775],{"emptyLinePlaceholder":774},true,"\n",[645,777,779,783,786,789,793,796,798,801,803,805,808,811,814,817,819,823,825],{"class":647,"line":778},5,[645,780,782],{"class":781},"s2Zo4","initLogger",[645,784,785],{"class":700},"(",[645,787,788],{"class":696},"{",[645,790,792],{"class":791},"swJcz"," env",[645,794,795],{"class":696},":",[645,797,697],{"class":696},[645,799,800],{"class":791}," service",[645,802,795],{"class":696},[645,804,710],{"class":696},[645,806,807],{"class":655},"checkout",[645,809,810],{"class":696},"'",[645,812,813],{"class":696}," },",[645,815,816],{"class":791}," pretty",[645,818,795],{"class":696},[645,820,822],{"class":821},"sfNiH"," false",[645,824,704],{"class":696},[645,826,827],{"class":700},")\n",[645,829,831],{"class":647,"line":830},6,[645,832,775],{"emptyLinePlaceholder":774},[645,834,836,839,841,843,847,849,852,855,859],{"class":647,"line":835},7,[645,837,838],{"class":781},"createServer",[645,840,785],{"class":700},[645,842,785],{"class":696},[645,844,846],{"class":845},"sHdIc","req",[645,848,749],{"class":696},[645,850,851],{"class":845}," res",[645,853,854],{"class":696},")",[645,856,858],{"class":857},"spNyl"," =>",[645,860,861],{"class":696}," {\n",[645,863,865,868,871,874,877,880,882,884,887,890,893,895,898,900,902,904,907,909],{"class":647,"line":864},8,[645,866,867],{"class":857},"  const",[645,869,870],{"class":700}," url",[645,872,873],{"class":696}," =",[645,875,876],{"class":696}," new",[645,878,879],{"class":781}," URL",[645,881,785],{"class":791},[645,883,846],{"class":700},[645,885,886],{"class":696},".",[645,888,889],{"class":700},"url",[645,891,892],{"class":696}," ??",[645,894,710],{"class":696},[645,896,897],{"class":655},"\u002F",[645,899,810],{"class":696},[645,901,749],{"class":696},[645,903,710],{"class":696},[645,905,906],{"class":655},"http:\u002F\u002Flocalhost",[645,908,810],{"class":696},[645,910,827],{"class":791},[645,912,914,916,919,921,923],{"class":647,"line":913},9,[645,915,867],{"class":857},[645,917,918],{"class":700}," requestId",[645,920,873],{"class":696},[645,922,701],{"class":781},[645,924,925],{"class":791},"()\n",[645,927,929,931,934,936,938,940,942,944,946,949,951,954,956,959,961,964,966,968,970,973,975],{"class":647,"line":928},10,[645,930,867],{"class":857},[645,932,933],{"class":700}," log",[645,935,873],{"class":696},[645,937,752],{"class":781},[645,939,785],{"class":791},[645,941,788],{"class":696},[645,943,918],{"class":700},[645,945,749],{"class":696},[645,947,948],{"class":791}," method",[645,950,795],{"class":696},[645,952,953],{"class":700}," req",[645,955,886],{"class":696},[645,957,958],{"class":700},"method",[645,960,749],{"class":696},[645,962,963],{"class":791}," path",[645,965,795],{"class":696},[645,967,870],{"class":700},[645,969,886],{"class":696},[645,971,972],{"class":700},"pathname",[645,974,704],{"class":696},[645,976,827],{"class":791},[645,978,980,983,985,988,990,992,995,997,999,1001],{"class":647,"line":979},11,[645,981,982],{"class":700},"  res",[645,984,886],{"class":696},[645,986,987],{"class":781},"setHeader",[645,989,785],{"class":791},[645,991,810],{"class":696},[645,993,994],{"class":655},"x-request-id",[645,996,810],{"class":696},[645,998,749],{"class":696},[645,1000,918],{"class":700},[645,1002,827],{"class":791},[645,1004,1006,1008,1010,1012,1014,1016,1019,1021,1023,1025,1028,1030],{"class":647,"line":1005},12,[645,1007,982],{"class":700},[645,1009,886],{"class":696},[645,1011,987],{"class":781},[645,1013,785],{"class":791},[645,1015,810],{"class":696},[645,1017,1018],{"class":655},"content-type",[645,1020,810],{"class":696},[645,1022,749],{"class":696},[645,1024,710],{"class":696},[645,1026,1027],{"class":655},"application\u002Fjson",[645,1029,810],{"class":696},[645,1031,827],{"class":791},[645,1033,1035],{"class":647,"line":1034},13,[645,1036,775],{"emptyLinePlaceholder":774},[645,1038,1040,1043],{"class":647,"line":1039},14,[645,1041,1042],{"class":692},"  try",[645,1044,861],{"class":696},[645,1046,1048,1051,1054,1056,1058,1060,1063,1065,1068,1070,1073,1075,1077,1079,1081,1083,1085,1087,1090],{"class":647,"line":1047},15,[645,1049,1050],{"class":692},"    if",[645,1052,1053],{"class":791}," (",[645,1055,846],{"class":700},[645,1057,886],{"class":696},[645,1059,958],{"class":700},[645,1061,1062],{"class":696}," !==",[645,1064,710],{"class":696},[645,1066,1067],{"class":655},"POST",[645,1069,810],{"class":696},[645,1071,1072],{"class":696}," ||",[645,1074,870],{"class":700},[645,1076,886],{"class":696},[645,1078,972],{"class":700},[645,1080,1062],{"class":696},[645,1082,710],{"class":696},[645,1084,674],{"class":655},[645,1086,810],{"class":696},[645,1088,1089],{"class":791},") ",[645,1091,1092],{"class":696},"{\n",[645,1094,1096,1099,1101,1104,1106],{"class":647,"line":1095},16,[645,1097,1098],{"class":700},"      res",[645,1100,886],{"class":696},[645,1102,1103],{"class":700},"statusCode",[645,1105,873],{"class":696},[645,1107,1109],{"class":1108},"sbssI"," 404\n",[645,1111,1113,1116,1118,1121,1123,1125,1128,1130,1132,1135,1137,1139],{"class":647,"line":1112},17,[645,1114,1115],{"class":700},"      log",[645,1117,886],{"class":696},[645,1119,1120],{"class":781},"set",[645,1122,785],{"class":791},[645,1124,788],{"class":696},[645,1126,1127],{"class":791}," outcome",[645,1129,795],{"class":696},[645,1131,710],{"class":696},[645,1133,1134],{"class":655},"not-found",[645,1136,810],{"class":696},[645,1138,704],{"class":696},[645,1140,827],{"class":791},[645,1142,1144,1146,1148,1151,1153,1156,1158,1161,1163,1165,1168,1170,1172,1175,1177,1179,1181,1183],{"class":647,"line":1143},18,[645,1145,1098],{"class":700},[645,1147,886],{"class":696},[645,1149,1150],{"class":781},"end",[645,1152,785],{"class":791},[645,1154,1155],{"class":700},"JSON",[645,1157,886],{"class":696},[645,1159,1160],{"class":781},"stringify",[645,1162,785],{"class":791},[645,1164,788],{"class":696},[645,1166,1167],{"class":791}," error",[645,1169,795],{"class":696},[645,1171,710],{"class":696},[645,1173,1174],{"class":655},"Not found",[645,1176,810],{"class":696},[645,1178,749],{"class":696},[645,1180,918],{"class":700},[645,1182,704],{"class":696},[645,1184,1185],{"class":791},"))\n",[645,1187,1189],{"class":647,"line":1188},19,[645,1190,1191],{"class":692},"      return\n",[645,1193,1195],{"class":647,"line":1194},20,[645,1196,1197],{"class":696},"    }\n",[645,1199,1201],{"class":647,"line":1200},21,[645,1202,775],{"emptyLinePlaceholder":774},[645,1204,1206,1209,1211,1213,1215,1217,1220,1222,1224,1227,1229,1231,1234,1236,1238,1241,1243,1246,1248,1251,1253,1255,1258,1260,1262,1264],{"class":647,"line":1205},22,[645,1207,1208],{"class":700},"    log",[645,1210,886],{"class":696},[645,1212,1120],{"class":781},[645,1214,785],{"class":791},[645,1216,788],{"class":696},[645,1218,1219],{"class":791}," orderId",[645,1221,795],{"class":696},[645,1223,710],{"class":696},[645,1225,1226],{"class":655},"order-123",[645,1228,810],{"class":696},[645,1230,749],{"class":696},[645,1232,1233],{"class":791}," payment",[645,1235,795],{"class":696},[645,1237,697],{"class":696},[645,1239,1240],{"class":791}," amount",[645,1242,795],{"class":696},[645,1244,1245],{"class":1108}," 2999",[645,1247,749],{"class":696},[645,1249,1250],{"class":791}," currency",[645,1252,795],{"class":696},[645,1254,710],{"class":696},[645,1256,1257],{"class":655},"EUR",[645,1259,810],{"class":696},[645,1261,704],{"class":696},[645,1263,704],{"class":696},[645,1265,827],{"class":791},[645,1267,1269,1271,1273,1275,1277,1280,1282,1285,1287,1289,1292,1294,1296,1299,1301,1304,1306,1308],{"class":647,"line":1268},23,[645,1270,1050],{"class":692},[645,1272,1053],{"class":791},[645,1274,889],{"class":700},[645,1276,886],{"class":696},[645,1278,1279],{"class":700},"searchParams",[645,1281,886],{"class":696},[645,1283,1284],{"class":781},"get",[645,1286,785],{"class":791},[645,1288,810],{"class":696},[645,1290,1291],{"class":655},"decline",[645,1293,810],{"class":696},[645,1295,1089],{"class":791},[645,1297,1298],{"class":696},"===",[645,1300,710],{"class":696},[645,1302,1303],{"class":655},"1",[645,1305,810],{"class":696},[645,1307,1089],{"class":791},[645,1309,1092],{"class":696},[645,1311,1313,1316,1318,1320],{"class":647,"line":1312},24,[645,1314,1315],{"class":692},"      throw",[645,1317,746],{"class":781},[645,1319,785],{"class":791},[645,1321,1092],{"class":696},[645,1323,1325,1328,1330,1332,1335,1337],{"class":647,"line":1324},25,[645,1326,1327],{"class":791},"        message",[645,1329,795],{"class":696},[645,1331,710],{"class":696},[645,1333,1334],{"class":655},"Payment declined",[645,1336,810],{"class":696},[645,1338,1339],{"class":696},",\n",[645,1341,1343,1346,1348,1351],{"class":647,"line":1342},26,[645,1344,1345],{"class":791},"        status",[645,1347,795],{"class":696},[645,1349,1350],{"class":1108}," 402",[645,1352,1339],{"class":696},[645,1354,1356,1359,1361,1363,1366,1368],{"class":647,"line":1355},27,[645,1357,1358],{"class":791},"        why",[645,1360,795],{"class":696},[645,1362,710],{"class":696},[645,1364,1365],{"class":655},"The simulated card has insufficient funds",[645,1367,810],{"class":696},[645,1369,1339],{"class":696},[645,1371,1373,1376,1378,1380,1383,1385],{"class":647,"line":1372},28,[645,1374,1375],{"class":791},"        fix",[645,1377,795],{"class":696},[645,1379,710],{"class":696},[645,1381,1382],{"class":655},"Try another payment method",[645,1384,810],{"class":696},[645,1386,1339],{"class":696},[645,1388,1390,1393],{"class":647,"line":1389},29,[645,1391,1392],{"class":696},"      }",[645,1394,827],{"class":791},[645,1396,1398],{"class":647,"line":1397},30,[645,1399,1197],{"class":696},[645,1401,1403],{"class":647,"line":1402},31,[645,1404,775],{"emptyLinePlaceholder":774},[645,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1427,1429,1431,1434,1436,1438,1440,1442,1444,1447,1449,1451],{"class":647,"line":1407},32,[645,1409,1208],{"class":700},[645,1411,886],{"class":696},[645,1413,1120],{"class":781},[645,1415,785],{"class":791},[645,1417,788],{"class":696},[645,1419,1233],{"class":791},[645,1421,795],{"class":696},[645,1423,697],{"class":696},[645,1425,1426],{"class":791}," chargeId",[645,1428,795],{"class":696},[645,1430,710],{"class":696},[645,1432,1433],{"class":655},"ch_123",[645,1435,810],{"class":696},[645,1437,813],{"class":696},[645,1439,1127],{"class":791},[645,1441,795],{"class":696},[645,1443,710],{"class":696},[645,1445,1446],{"class":655},"paid",[645,1448,810],{"class":696},[645,1450,704],{"class":696},[645,1452,827],{"class":791},[645,1454,1456,1459,1461,1463,1465],{"class":647,"line":1455},33,[645,1457,1458],{"class":700},"    res",[645,1460,886],{"class":696},[645,1462,1103],{"class":700},[645,1464,873],{"class":696},[645,1466,1467],{"class":1108}," 200\n",[645,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505],{"class":647,"line":1470},34,[645,1472,1458],{"class":700},[645,1474,886],{"class":696},[645,1476,1150],{"class":781},[645,1478,785],{"class":791},[645,1480,1155],{"class":700},[645,1482,886],{"class":696},[645,1484,1160],{"class":781},[645,1486,785],{"class":791},[645,1488,788],{"class":696},[645,1490,1219],{"class":791},[645,1492,795],{"class":696},[645,1494,710],{"class":696},[645,1496,1226],{"class":655},[645,1498,810],{"class":696},[645,1500,749],{"class":696},[645,1502,918],{"class":700},[645,1504,704],{"class":696},[645,1506,1185],{"class":791},[645,1508,1510,1513,1516,1518,1521,1523],{"class":647,"line":1509},35,[645,1511,1512],{"class":696},"  }",[645,1514,1515],{"class":692}," catch",[645,1517,1053],{"class":791},[645,1519,1520],{"class":700},"error",[645,1522,1089],{"class":791},[645,1524,1092],{"class":696},[645,1526,1528,1530,1532,1534,1536,1538,1541,1544,1547,1549,1552,1554,1556,1558,1561,1563,1565],{"class":647,"line":1527},36,[645,1529,1208],{"class":700},[645,1531,886],{"class":696},[645,1533,1520],{"class":781},[645,1535,785],{"class":791},[645,1537,1520],{"class":700},[645,1539,1540],{"class":696}," instanceof",[645,1542,1543],{"class":651}," Error",[645,1545,1546],{"class":696}," ?",[645,1548,1167],{"class":700},[645,1550,1551],{"class":696}," :",[645,1553,876],{"class":696},[645,1555,1543],{"class":781},[645,1557,785],{"class":791},[645,1559,1560],{"class":781},"String",[645,1562,785],{"class":791},[645,1564,1520],{"class":700},[645,1566,1567],{"class":791},")))\n",[645,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1590,1592,1594],{"class":647,"line":1570},37,[645,1572,1208],{"class":700},[645,1574,886],{"class":696},[645,1576,1120],{"class":781},[645,1578,785],{"class":791},[645,1580,788],{"class":696},[645,1582,1127],{"class":791},[645,1584,795],{"class":696},[645,1586,710],{"class":696},[645,1588,1589],{"class":655},"declined",[645,1591,810],{"class":696},[645,1593,704],{"class":696},[645,1595,827],{"class":791},[645,1597,1599,1601,1603,1605,1607],{"class":647,"line":1598},38,[645,1600,1458],{"class":700},[645,1602,886],{"class":696},[645,1604,1103],{"class":700},[645,1606,873],{"class":696},[645,1608,1609],{"class":1108}," 402\n",[645,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647],{"class":647,"line":1612},39,[645,1614,1458],{"class":700},[645,1616,886],{"class":696},[645,1618,1150],{"class":781},[645,1620,785],{"class":791},[645,1622,1155],{"class":700},[645,1624,886],{"class":696},[645,1626,1160],{"class":781},[645,1628,785],{"class":791},[645,1630,788],{"class":696},[645,1632,1167],{"class":791},[645,1634,795],{"class":696},[645,1636,710],{"class":696},[645,1638,1334],{"class":655},[645,1640,810],{"class":696},[645,1642,749],{"class":696},[645,1644,918],{"class":700},[645,1646,704],{"class":696},[645,1648,1185],{"class":791},[645,1650,1652,1654,1657],{"class":647,"line":1651},40,[645,1653,1512],{"class":696},[645,1655,1656],{"class":692}," finally",[645,1658,861],{"class":696},[645,1660,1662,1664,1666,1669,1671,1673,1676,1678,1680,1682,1684,1686],{"class":647,"line":1661},41,[645,1663,1208],{"class":700},[645,1665,886],{"class":696},[645,1667,1668],{"class":781},"emit",[645,1670,785],{"class":791},[645,1672,788],{"class":696},[645,1674,1675],{"class":791}," status",[645,1677,795],{"class":696},[645,1679,851],{"class":700},[645,1681,886],{"class":696},[645,1683,1103],{"class":700},[645,1685,704],{"class":696},[645,1687,827],{"class":791},[645,1689,1691],{"class":647,"line":1690},42,[645,1692,1693],{"class":696},"  }\n",[645,1695,1697,1700,1702,1704,1707,1709,1712],{"class":647,"line":1696},43,[645,1698,1699],{"class":696},"}",[645,1701,854],{"class":700},[645,1703,886],{"class":696},[645,1705,1706],{"class":781},"listen",[645,1708,785],{"class":700},[645,1710,1711],{"class":1108},"3000",[645,1713,827],{"class":700},[614,1715,1716],{},"Send both requests from another terminal:",[634,1718,1720],{"className":636,"code":1719,"filename":638,"language":639,"meta":640,"style":640},"curl -i -X POST http:\u002F\u002Flocalhost:3000\u002Fcheckout\ncurl -i -X POST 'http:\u002F\u002Flocalhost:3000\u002Fcheckout?decline=1'\n",[642,1721,1722,1739],{"__ignoreMap":640},[645,1723,1724,1727,1730,1733,1736],{"class":647,"line":648},[645,1725,1726],{"class":651},"curl",[645,1728,1729],{"class":655}," -i",[645,1731,1732],{"class":655}," -X",[645,1734,1735],{"class":655}," POST",[645,1737,1738],{"class":655}," http:\u002F\u002Flocalhost:3000\u002Fcheckout\n",[645,1740,1741,1743,1745,1747,1749,1751,1754],{"class":647,"line":662},[645,1742,1726],{"class":651},[645,1744,1729],{"class":655},[645,1746,1732],{"class":655},[645,1748,1735],{"class":655},[645,1750,710],{"class":696},[645,1752,1753],{"class":655},"http:\u002F\u002Flocalhost:3000\u002Fcheckout?decline=1",[645,1755,716],{"class":696},[626,1757,1759],{"id":1758},"read-the-result","Read the result",[614,1761,1762,1763,1765,1766,1769],{},"The response's ",[642,1764,994],{}," header matches the event's ",[642,1767,1768],{},"requestId",". The successful event includes the following fields, plus environment metadata and timing fields:",[634,1771,1776],{"className":1772,"code":1773,"filename":1774,"language":1775,"meta":640,"style":640},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"level\": \"info\",\n  \"service\": \"checkout\",\n  \"method\": \"POST\",\n  \"path\": \"\u002Fcheckout\",\n  \"orderId\": \"order-123\",\n  \"payment\": { \"amount\": 2999, \"currency\": \"EUR\", \"chargeId\": \"ch_123\" },\n  \"outcome\": \"paid\",\n  \"status\": 200\n}\n","Successful event, selected fields","json",[642,1777,1778,1782,1805,1824,1842,1861,1880,1941,1960,1973],{"__ignoreMap":640},[645,1779,1780],{"class":647,"line":648},[645,1781,1092],{"class":696},[645,1783,1784,1787,1790,1793,1795,1798,1801,1803],{"class":647,"line":662},[645,1785,1786],{"class":696},"  \"",[645,1788,1789],{"class":857},"level",[645,1791,1792],{"class":696},"\"",[645,1794,795],{"class":696},[645,1796,1797],{"class":696}," \"",[645,1799,1800],{"class":655},"info",[645,1802,1792],{"class":696},[645,1804,1339],{"class":696},[645,1806,1807,1809,1812,1814,1816,1818,1820,1822],{"class":647,"line":739},[645,1808,1786],{"class":696},[645,1810,1811],{"class":857},"service",[645,1813,1792],{"class":696},[645,1815,795],{"class":696},[645,1817,1797],{"class":696},[645,1819,807],{"class":655},[645,1821,1792],{"class":696},[645,1823,1339],{"class":696},[645,1825,1826,1828,1830,1832,1834,1836,1838,1840],{"class":647,"line":771},[645,1827,1786],{"class":696},[645,1829,958],{"class":857},[645,1831,1792],{"class":696},[645,1833,795],{"class":696},[645,1835,1797],{"class":696},[645,1837,1067],{"class":655},[645,1839,1792],{"class":696},[645,1841,1339],{"class":696},[645,1843,1844,1846,1849,1851,1853,1855,1857,1859],{"class":647,"line":778},[645,1845,1786],{"class":696},[645,1847,1848],{"class":857},"path",[645,1850,1792],{"class":696},[645,1852,795],{"class":696},[645,1854,1797],{"class":696},[645,1856,674],{"class":655},[645,1858,1792],{"class":696},[645,1860,1339],{"class":696},[645,1862,1863,1865,1868,1870,1872,1874,1876,1878],{"class":647,"line":830},[645,1864,1786],{"class":696},[645,1866,1867],{"class":857},"orderId",[645,1869,1792],{"class":696},[645,1871,795],{"class":696},[645,1873,1797],{"class":696},[645,1875,1226],{"class":655},[645,1877,1792],{"class":696},[645,1879,1339],{"class":696},[645,1881,1882,1884,1887,1889,1891,1893,1895,1898,1900,1902,1904,1906,1908,1911,1913,1915,1917,1919,1921,1923,1925,1928,1930,1932,1934,1936,1938],{"class":647,"line":835},[645,1883,1786],{"class":696},[645,1885,1886],{"class":857},"payment",[645,1888,1792],{"class":696},[645,1890,795],{"class":696},[645,1892,697],{"class":696},[645,1894,1797],{"class":696},[645,1896,1897],{"class":651},"amount",[645,1899,1792],{"class":696},[645,1901,795],{"class":696},[645,1903,1245],{"class":1108},[645,1905,749],{"class":696},[645,1907,1797],{"class":696},[645,1909,1910],{"class":651},"currency",[645,1912,1792],{"class":696},[645,1914,795],{"class":696},[645,1916,1797],{"class":696},[645,1918,1257],{"class":655},[645,1920,1792],{"class":696},[645,1922,749],{"class":696},[645,1924,1797],{"class":696},[645,1926,1927],{"class":651},"chargeId",[645,1929,1792],{"class":696},[645,1931,795],{"class":696},[645,1933,1797],{"class":696},[645,1935,1433],{"class":655},[645,1937,1792],{"class":696},[645,1939,1940],{"class":696}," },\n",[645,1942,1943,1945,1948,1950,1952,1954,1956,1958],{"class":647,"line":864},[645,1944,1786],{"class":696},[645,1946,1947],{"class":857},"outcome",[645,1949,1792],{"class":696},[645,1951,795],{"class":696},[645,1953,1797],{"class":696},[645,1955,1446],{"class":655},[645,1957,1792],{"class":696},[645,1959,1339],{"class":696},[645,1961,1962,1964,1967,1969,1971],{"class":647,"line":913},[645,1963,1786],{"class":696},[645,1965,1966],{"class":857},"status",[645,1968,1792],{"class":696},[645,1970,795],{"class":696},[645,1972,1467],{"class":1108},[645,1974,1975],{"class":647,"line":928},[645,1976,1977],{"class":696},"}\n",[614,1979,1980,1981,1984,1985,1988,1989,1992],{},"The declined request emits an error event with ",[642,1982,1983],{},"status: 402",", ",[642,1986,1987],{},"outcome: 'declined'",", and the error's message, reason, and suggested fix. Both paths include ",[642,1990,1991],{},"durationMs",", measured from logger creation to emission. This example measures handler work, not confirmation that the client received the response.",[626,1994,1996],{"id":1995},"move-from-the-example-to-your-application","Move from the example to your application",[614,1998,1999,2000,2003],{},"Choose the fields that will help you debug this operation, such as order IDs, payment outcomes, and timings. Keep credentials and unnecessary personal data out of the context, and use ",[621,2001,2002],{"href":72},"Redaction"," for sensitive fields you retain.",[614,2005,671,2006,2009],{},[642,2007,2008],{},"finally"," block emits on normal returns and exceptions through this handler. It cannot guarantee delivery if the process is terminated.",[614,2011,2012,2015],{},[642,2013,2014],{},"pretty: false"," forces JSON in this example. Without that override, evlog selects pretty output in development and JSON in production.",[614,2017,2018,2019,2022,2023,2026,2027,886],{},"For Express, Fastify, NestJS, or Hono, use a ",[621,2020,2021],{"href":241},"framework integration"," to manage request logging. For remote delivery, choose a ",[621,2024,2025],{"href":158},"drain adapter"," and its batching\u002Fretry configuration. Short-lived processes must await pending delivery as described in ",[621,2028,2029],{"href":306},"Standalone TypeScript",[614,2031,2032,2033,2035,2036,2039],{},"To keep field names and values consistent across handlers, continue with ",[621,2034,76],{"href":77},". The ",[621,2037,2038],{"href":62},"Logging Lifecycle"," explains how framework integrations collect context and emit events for you.",[2041,2042,2043],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":640,"searchDepth":662,"depth":662,"links":2045},[2046,2047,2048],{"id":628,"depth":662,"text":629},{"id":1758,"depth":662,"text":1759},{"id":1995,"depth":662,"text":1996},"Build a Node.js HTTP handler with structured request logs, explicit outcomes, error context, and a JSON event you can query.","md",[2052,2055],{"label":2029,"icon":33,"to":306,"color":2053,"variant":2054},"neutral","subtle",{"label":25,"icon":28,"to":26,"color":2053,"variant":2054},{},{"title":455,"icon":439},{"title":609,"description":2049},"LtjcmPV9_rG6QETXqZHaMkObHoM8_P-lblYpnPD3LkA",[2061,2063],{"title":450,"path":451,"stem":452,"description":2062,"icon":453,"children":-1},"One evlog wide event per eve agent turn: token usage, tool executions, and business context, through your own drains and tail sampling.",{"title":41,"path":465,"stem":466,"description":2064,"icon":44,"children":-1},"Ask a model one question about each request and get the answer back as a column: who broke it, is it worth paging, did the customer get what they came for.",1791230892195]