[{"data":1,"prerenderedAt":3502},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-nitro":612,"-integrate-frameworks-nitro-surround":3497},[4,35,85,148,328,489,548,587],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133,138,143],{"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},"config","\u002Fcli\u002Fconfig","3.cli\u002F11.config","i-lucide-settings-2",{"title":109,"path":110,"stem":111,"icon":112},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":114,"path":115,"stem":116,"icon":117},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":119,"path":120,"stem":121,"icon":122},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":124,"path":125,"stem":126,"icon":127},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":129,"path":130,"stem":131,"icon":132},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":134,"path":135,"stem":136,"icon":137},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":139,"path":140,"stem":141,"icon":142},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":144,"path":145,"stem":146,"icon":147},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":149,"path":150,"stem":151,"children":152,"page":34},"Integrate","\u002Fintegrate","4.integrate",[153,157,240],{"title":41,"path":154,"stem":155,"icon":156},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":158,"path":159,"stem":160,"children":161,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[162,165,195,220],{"title":41,"path":163,"stem":164,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":166,"path":167,"stem":168,"children":169,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[170,175,180,185,190],{"title":171,"path":172,"stem":173,"icon":174},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":176,"path":177,"stem":178,"icon":179},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":181,"path":182,"stem":183,"icon":184},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":186,"path":187,"stem":188,"icon":189},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":191,"path":192,"stem":193,"icon":194},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":196,"path":197,"stem":198,"children":199,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[200,205,210,215],{"title":201,"path":202,"stem":203,"icon":204},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":206,"path":207,"stem":208,"icon":209},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":211,"path":212,"stem":213,"icon":214},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":216,"path":217,"stem":218,"icon":219},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":221,"path":222,"stem":223,"children":224,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[225,230,235],{"title":226,"path":227,"stem":228,"icon":229},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":231,"path":232,"stem":233,"icon":234},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":236,"path":237,"stem":238,"icon":239},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":241,"path":242,"stem":243,"children":244,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[245,249,254,259,264,269,274,279,284,289,294,299,304,309,313,318,323],{"title":41,"path":246,"stem":247,"icon":248},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":250,"path":251,"stem":252,"icon":253},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":255,"path":256,"stem":257,"icon":258},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":260,"path":261,"stem":262,"icon":263},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":265,"path":266,"stem":267,"icon":268},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":270,"path":271,"stem":272,"icon":273},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":275,"path":276,"stem":277,"icon":278},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":280,"path":281,"stem":282,"icon":283},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":285,"path":286,"stem":287,"icon":288},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":290,"path":291,"stem":292,"icon":293},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":295,"path":296,"stem":297,"icon":298},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":300,"path":301,"stem":302,"icon":303},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":305,"path":306,"stem":307,"icon":308},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":310,"path":311,"stem":312,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":314,"path":315,"stem":316,"icon":317},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":319,"path":320,"stem":321,"icon":322},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":324,"path":325,"stem":326,"icon":327},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":329,"path":330,"stem":331,"children":332,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[333,336,341,369,396,428,449,454,459,463],{"title":41,"path":334,"stem":335,"icon":117},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":337,"path":338,"stem":339,"icon":340},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":342,"icon":343,"path":344,"stem":345,"children":346,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[347,350,355,360,365],{"title":41,"path":348,"stem":349,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":351,"path":352,"stem":353,"icon":354},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":356,"path":357,"stem":358,"icon":359},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":361,"path":362,"stem":363,"icon":364},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":366,"path":367,"stem":368,"icon":147},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":370,"icon":371,"path":372,"stem":373,"children":374,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[375,378,383,388,392],{"title":41,"path":376,"stem":377,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":379,"path":380,"stem":381,"icon":382},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":384,"path":385,"stem":386,"icon":387},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":389,"path":390,"stem":391,"icon":340},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":393,"path":394,"stem":395,"icon":122},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":397,"icon":398,"path":399,"stem":400,"children":401,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[402,405,410,415,420,424],{"title":41,"path":403,"stem":404,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":406,"path":407,"stem":408,"icon":409},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":411,"path":412,"stem":413,"icon":414},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":416,"path":417,"stem":418,"icon":419},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":421,"path":422,"stem":423,"icon":398},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":425,"path":426,"stem":427,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":366,"icon":122,"path":429,"stem":430,"children":431,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[432,435,440,445],{"title":41,"path":433,"stem":434,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":436,"path":437,"stem":438,"icon":439},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":441,"path":442,"stem":443,"icon":444},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":446,"path":447,"stem":448,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":450,"path":451,"stem":452,"icon":453},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":455,"path":456,"stem":457,"icon":458},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":460,"path":461,"stem":462,"icon":444},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":464,"icon":465,"path":466,"stem":467,"children":468,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[469,472,477,482,485],{"title":41,"path":470,"stem":471,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":473,"path":474,"stem":475,"icon":476},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":478,"path":479,"stem":480,"icon":481},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":446,"path":483,"stem":484,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":425,"path":486,"stem":487,"icon":488},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":490,"path":491,"stem":492,"children":493,"page":34},"Extend","\u002Fextend","6.extend",[494,498,503,508,512,517,521,525,529,533,538,543],{"title":41,"path":495,"stem":496,"icon":497},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":499,"path":500,"stem":501,"icon":502},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":504,"path":505,"stem":506,"icon":507},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":509,"path":510,"stem":511,"icon":502},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":513,"path":514,"stem":515,"icon":516},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":425,"path":518,"stem":519,"icon":520},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":522,"path":523,"stem":524,"icon":497},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":526,"path":527,"stem":528,"icon":453},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":530,"path":531,"stem":532,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":534,"path":535,"stem":536,"icon":537},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":539,"path":540,"stem":541,"icon":542},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":544,"path":545,"stem":546,"icon":547},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":446,"path":549,"stem":550,"children":551,"page":34},"\u002Freference","7.reference",[552,556,561,564,569,573,578,582],{"title":41,"path":553,"stem":554,"icon":555},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":557,"path":558,"stem":559,"icon":560},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":393,"path":562,"stem":563,"icon":122},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":565,"path":566,"stem":567,"icon":568},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":570,"path":571,"stem":572,"icon":398},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":574,"path":575,"stem":576,"icon":577},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":579,"path":580,"stem":581,"icon":453},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":583,"path":584,"stem":585,"icon":586},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":588,"path":589,"stem":590,"children":591,"page":34},"Compare","\u002Fcompare","8.compare",[592,596,600,604,608],{"title":593,"path":594,"stem":595,"icon":577},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":597,"path":598,"stem":599,"icon":214},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":601,"path":602,"stem":603,"icon":577},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":605,"path":606,"stem":607,"icon":577},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":609,"path":610,"stem":611,"icon":577},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":613,"title":265,"body":614,"description":3490,"extension":3491,"links":3492,"meta":3493,"navigation":3494,"path":266,"seo":3495,"stem":267,"__hash__":3496},"docs\u002F4.integrate\u002Fframeworks\u002F04.nitro.md",{"type":615,"value":616,"toc":3470},"minimark",[617,626,673,677,682,753,757,1030,1033,1039,1511,1514,1573,1606,1610,1628,1990,2006,2009,2029,2043,2047,2062,2444,2457,2461,2476,2480,2715,2727,2731,2890,2899,2901,2905,2908,3263,3266,3270,3277,3420,3427,3431,3437,3466],[618,619,620,621,625],"p",{},"evlog provides modules for both Nitro v3 and Nitro v2 (nitropack). The module hooks into the request lifecycle, creating a request-scoped logger accessible via ",[622,623,624],"code",{},"useLogger(event)",", and emits a wide event when the response completes.",[627,628,631,634,659],"prompt",{":actions":629,"description":630,"icon":268},"[\"copy\",\"cursor\",\"claude\"]","Set up evlog in my Nitro app",[618,632,633],{},"Set up evlog in my Nitro app.",[635,636,637,641,644,647,650,653,656],"ul",{},[638,639,640],"li",{},"Install evlog: pnpm add evlog",[638,642,643],{},"Import the evlog module in nitro.config.ts (evlog\u002Fnitro for v2, evlog\u002Fnitro\u002Fv3 for v3)",[638,645,646],{},"Configure env.service with your app name",[638,648,649],{},"Use useLogger(event) in route handlers to build wide events",[638,651,652],{},"Use log.set() to accumulate context throughout the request",[638,654,655],{},"Throw errors with createError({ message, status, why, fix })",[638,657,658],{},"Wide events are auto-emitted when each request completes",[618,660,661,662,668,669],{},"Docs: ",[663,664,665],"a",{"href":665,"rel":666},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Fnitro",[667],"nofollow","\nAdapters: ",[663,670,671],{"href":671,"rel":672},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[667],[674,675,25],"h2",{"id":676},"quick-start",[678,679,681],"h3",{"id":680},"_1-install","1. Install",[683,684,685,710,724,738],"code-group",{},[686,687,693],"pre",{"className":688,"code":689,"filename":690,"language":691,"meta":692,"style":692},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[622,694,695],{"__ignoreMap":692},[696,697,700,703,707],"span",{"class":698,"line":699},"line",1,[696,701,690],{"class":702},"sBMFI",[696,704,706],{"class":705},"sfazB"," add",[696,708,709],{"class":705}," evlog\n",[686,711,714],{"className":688,"code":712,"filename":713,"language":691,"meta":692,"style":692},"bun add evlog\n","bun",[622,715,716],{"__ignoreMap":692},[696,717,718,720,722],{"class":698,"line":699},[696,719,713],{"class":702},[696,721,706],{"class":705},[696,723,709],{"class":705},[686,725,728],{"className":688,"code":726,"filename":727,"language":691,"meta":692,"style":692},"yarn add evlog\n","yarn",[622,729,730],{"__ignoreMap":692},[696,731,732,734,736],{"class":698,"line":699},[696,733,727],{"class":702},[696,735,706],{"class":705},[696,737,709],{"class":705},[686,739,742],{"className":688,"code":740,"filename":741,"language":691,"meta":692,"style":692},"npm install evlog\n","npm",[622,743,744],{"__ignoreMap":692},[696,745,746,748,751],{"class":698,"line":699},[696,747,741],{"class":702},[696,749,750],{"class":705}," install",[696,752,709],{"class":705},[678,754,756],{"id":755},"_2-add-the-module","2. Add the module",[683,758,759,917],{},[686,760,765],{"className":761,"code":762,"filename":763,"language":764,"meta":692,"style":692},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineConfig } from 'nitro'\nimport evlog from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineConfig({\n  modules: [\n    evlog({\n      env: { service: 'my-app' },\n    }),\n  ],\n})\n","nitro.config.ts (v3)","typescript",[622,766,767,796,814,821,839,852,862,888,900,908],{"__ignoreMap":692},[696,768,769,773,777,781,784,787,790,793],{"class":698,"line":699},[696,770,772],{"class":771},"s7zQu","import",[696,774,776],{"class":775},"sMK4o"," {",[696,778,780],{"class":779},"sTEyZ"," defineConfig",[696,782,783],{"class":775}," }",[696,785,786],{"class":771}," from",[696,788,789],{"class":775}," '",[696,791,792],{"class":705},"nitro",[696,794,795],{"class":775},"'\n",[696,797,799,801,804,807,809,812],{"class":698,"line":798},2,[696,800,772],{"class":771},[696,802,803],{"class":779}," evlog ",[696,805,806],{"class":771},"from",[696,808,789],{"class":775},[696,810,811],{"class":705},"evlog\u002Fnitro\u002Fv3",[696,813,795],{"class":775},[696,815,817],{"class":698,"line":816},3,[696,818,820],{"emptyLinePlaceholder":819},true,"\n",[696,822,824,827,830,833,836],{"class":698,"line":823},4,[696,825,826],{"class":771},"export",[696,828,829],{"class":771}," default",[696,831,780],{"class":832},"s2Zo4",[696,834,835],{"class":779},"(",[696,837,838],{"class":775},"{\n",[696,840,842,846,849],{"class":698,"line":841},5,[696,843,845],{"class":844},"swJcz","  modules",[696,847,848],{"class":775},":",[696,850,851],{"class":779}," [\n",[696,853,855,858,860],{"class":698,"line":854},6,[696,856,857],{"class":832},"    evlog",[696,859,835],{"class":779},[696,861,838],{"class":775},[696,863,865,868,870,872,875,877,879,882,885],{"class":698,"line":864},7,[696,866,867],{"class":844},"      env",[696,869,848],{"class":775},[696,871,776],{"class":775},[696,873,874],{"class":844}," service",[696,876,848],{"class":775},[696,878,789],{"class":775},[696,880,881],{"class":705},"my-app",[696,883,884],{"class":775},"'",[696,886,887],{"class":775}," },\n",[696,889,891,894,897],{"class":698,"line":890},8,[696,892,893],{"class":775},"    }",[696,895,896],{"class":779},")",[696,898,899],{"class":775},",\n",[696,901,903,906],{"class":698,"line":902},9,[696,904,905],{"class":779},"  ]",[696,907,899],{"class":775},[696,909,911,914],{"class":698,"line":910},10,[696,912,913],{"class":775},"}",[696,915,916],{"class":779},")\n",[686,918,921],{"className":761,"code":919,"filename":920,"language":764,"meta":692,"style":692},"import { defineNitroConfig } from 'nitropack\u002Fconfig'\nimport evlog from 'evlog\u002Fnitro'\n\nexport default defineNitroConfig({\n  modules: [\n    evlog({\n      env: { service: 'my-app' },\n    }),\n  ],\n})\n","nitro.config.ts (v2)",[622,922,923,943,958,962,974,982,990,1010,1018,1024],{"__ignoreMap":692},[696,924,925,927,929,932,934,936,938,941],{"class":698,"line":699},[696,926,772],{"class":771},[696,928,776],{"class":775},[696,930,931],{"class":779}," defineNitroConfig",[696,933,783],{"class":775},[696,935,786],{"class":771},[696,937,789],{"class":775},[696,939,940],{"class":705},"nitropack\u002Fconfig",[696,942,795],{"class":775},[696,944,945,947,949,951,953,956],{"class":698,"line":798},[696,946,772],{"class":771},[696,948,803],{"class":779},[696,950,806],{"class":771},[696,952,789],{"class":775},[696,954,955],{"class":705},"evlog\u002Fnitro",[696,957,795],{"class":775},[696,959,960],{"class":698,"line":816},[696,961,820],{"emptyLinePlaceholder":819},[696,963,964,966,968,970,972],{"class":698,"line":823},[696,965,826],{"class":771},[696,967,829],{"class":771},[696,969,931],{"class":832},[696,971,835],{"class":779},[696,973,838],{"class":775},[696,975,976,978,980],{"class":698,"line":841},[696,977,845],{"class":844},[696,979,848],{"class":775},[696,981,851],{"class":779},[696,983,984,986,988],{"class":698,"line":854},[696,985,857],{"class":832},[696,987,835],{"class":779},[696,989,838],{"class":775},[696,991,992,994,996,998,1000,1002,1004,1006,1008],{"class":698,"line":864},[696,993,867],{"class":844},[696,995,848],{"class":775},[696,997,776],{"class":775},[696,999,874],{"class":844},[696,1001,848],{"class":775},[696,1003,789],{"class":775},[696,1005,881],{"class":705},[696,1007,884],{"class":775},[696,1009,887],{"class":775},[696,1011,1012,1014,1016],{"class":698,"line":890},[696,1013,893],{"class":775},[696,1015,896],{"class":779},[696,1017,899],{"class":775},[696,1019,1020,1022],{"class":698,"line":902},[696,1021,905],{"class":779},[696,1023,899],{"class":775},[696,1025,1026,1028],{"class":698,"line":910},[696,1027,913],{"class":775},[696,1029,916],{"class":779},[674,1031,51],{"id":1032},"wide-events",[618,1034,1035,1036,1038],{},"Build up context progressively throughout a request with ",[622,1037,624],{},". evlog emits a single wide event when the request completes.",[683,1040,1041,1292],{},[686,1042,1045],{"className":761,"code":1043,"filename":1044,"language":764,"meta":692,"style":692},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger } from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\n\n  log.set({ user: { id: body.userId } })\n  log.set({ cart: { items: body.items.length, total: body.total } })\n\n  return { success: true }\n})\n","routes\u002Fapi\u002Fcheckout.post.ts (v3)",[622,1046,1047,1067,1086,1090,1119,1138,1159,1163,1204,1261,1265,1285],{"__ignoreMap":692},[696,1048,1049,1051,1053,1056,1058,1060,1062,1065],{"class":698,"line":699},[696,1050,772],{"class":771},[696,1052,776],{"class":775},[696,1054,1055],{"class":779}," defineHandler",[696,1057,783],{"class":775},[696,1059,786],{"class":771},[696,1061,789],{"class":775},[696,1063,1064],{"class":705},"nitro\u002Fh3",[696,1066,795],{"class":775},[696,1068,1069,1071,1073,1076,1078,1080,1082,1084],{"class":698,"line":798},[696,1070,772],{"class":771},[696,1072,776],{"class":775},[696,1074,1075],{"class":779}," useLogger",[696,1077,783],{"class":775},[696,1079,786],{"class":771},[696,1081,789],{"class":775},[696,1083,811],{"class":705},[696,1085,795],{"class":775},[696,1087,1088],{"class":698,"line":816},[696,1089,820],{"emptyLinePlaceholder":819},[696,1091,1092,1094,1096,1098,1100,1104,1107,1111,1113,1116],{"class":698,"line":823},[696,1093,826],{"class":771},[696,1095,829],{"class":771},[696,1097,1055],{"class":832},[696,1099,835],{"class":779},[696,1101,1103],{"class":1102},"spNyl","async",[696,1105,1106],{"class":775}," (",[696,1108,1110],{"class":1109},"sHdIc","event",[696,1112,896],{"class":775},[696,1114,1115],{"class":1102}," =>",[696,1117,1118],{"class":775}," {\n",[696,1120,1121,1124,1127,1130,1132,1134,1136],{"class":698,"line":841},[696,1122,1123],{"class":1102},"  const",[696,1125,1126],{"class":779}," log",[696,1128,1129],{"class":775}," =",[696,1131,1075],{"class":832},[696,1133,835],{"class":844},[696,1135,1110],{"class":779},[696,1137,916],{"class":844},[696,1139,1140,1142,1145,1147,1150,1153,1155,1157],{"class":698,"line":854},[696,1141,1123],{"class":1102},[696,1143,1144],{"class":779}," body",[696,1146,1129],{"class":775},[696,1148,1149],{"class":771}," await",[696,1151,1152],{"class":832}," readBody",[696,1154,835],{"class":844},[696,1156,1110],{"class":779},[696,1158,916],{"class":844},[696,1160,1161],{"class":698,"line":864},[696,1162,820],{"emptyLinePlaceholder":819},[696,1164,1165,1168,1171,1174,1176,1179,1182,1184,1186,1189,1191,1193,1195,1198,1200,1202],{"class":698,"line":890},[696,1166,1167],{"class":779},"  log",[696,1169,1170],{"class":775},".",[696,1172,1173],{"class":832},"set",[696,1175,835],{"class":844},[696,1177,1178],{"class":775},"{",[696,1180,1181],{"class":844}," user",[696,1183,848],{"class":775},[696,1185,776],{"class":775},[696,1187,1188],{"class":844}," id",[696,1190,848],{"class":775},[696,1192,1144],{"class":779},[696,1194,1170],{"class":775},[696,1196,1197],{"class":779},"userId",[696,1199,783],{"class":775},[696,1201,783],{"class":775},[696,1203,916],{"class":844},[696,1205,1206,1208,1210,1212,1214,1216,1219,1221,1223,1226,1228,1230,1232,1235,1237,1240,1243,1246,1248,1250,1252,1255,1257,1259],{"class":698,"line":902},[696,1207,1167],{"class":779},[696,1209,1170],{"class":775},[696,1211,1173],{"class":832},[696,1213,835],{"class":844},[696,1215,1178],{"class":775},[696,1217,1218],{"class":844}," cart",[696,1220,848],{"class":775},[696,1222,776],{"class":775},[696,1224,1225],{"class":844}," items",[696,1227,848],{"class":775},[696,1229,1144],{"class":779},[696,1231,1170],{"class":775},[696,1233,1234],{"class":779},"items",[696,1236,1170],{"class":775},[696,1238,1239],{"class":779},"length",[696,1241,1242],{"class":775},",",[696,1244,1245],{"class":844}," total",[696,1247,848],{"class":775},[696,1249,1144],{"class":779},[696,1251,1170],{"class":775},[696,1253,1254],{"class":779},"total",[696,1256,783],{"class":775},[696,1258,783],{"class":775},[696,1260,916],{"class":844},[696,1262,1263],{"class":698,"line":910},[696,1264,820],{"emptyLinePlaceholder":819},[696,1266,1268,1271,1273,1276,1278,1282],{"class":698,"line":1267},11,[696,1269,1270],{"class":771},"  return",[696,1272,776],{"class":775},[696,1274,1275],{"class":844}," success",[696,1277,848],{"class":775},[696,1279,1281],{"class":1280},"sfNiH"," true",[696,1283,1284],{"class":775}," }\n",[696,1286,1288,1290],{"class":698,"line":1287},12,[696,1289,913],{"class":775},[696,1291,916],{"class":779},[686,1293,1296],{"className":761,"code":1294,"filename":1295,"language":764,"meta":692,"style":692},"import { defineEventHandler, readBody } from 'h3'\nimport { useLogger } from 'evlog\u002Fnitro'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\n\n  log.set({ user: { id: body.userId } })\n  log.set({ cart: { items: body.items.length, total: body.total } })\n\n  return { success: true }\n})\n","routes\u002Fapi\u002Fcheckout.post.ts (v2)",[622,1297,1298,1321,1339,1343,1365,1381,1399,1403,1437,1487,1491,1505],{"__ignoreMap":692},[696,1299,1300,1302,1304,1307,1309,1311,1313,1315,1317,1319],{"class":698,"line":699},[696,1301,772],{"class":771},[696,1303,776],{"class":775},[696,1305,1306],{"class":779}," defineEventHandler",[696,1308,1242],{"class":775},[696,1310,1152],{"class":779},[696,1312,783],{"class":775},[696,1314,786],{"class":771},[696,1316,789],{"class":775},[696,1318,678],{"class":705},[696,1320,795],{"class":775},[696,1322,1323,1325,1327,1329,1331,1333,1335,1337],{"class":698,"line":798},[696,1324,772],{"class":771},[696,1326,776],{"class":775},[696,1328,1075],{"class":779},[696,1330,783],{"class":775},[696,1332,786],{"class":771},[696,1334,789],{"class":775},[696,1336,955],{"class":705},[696,1338,795],{"class":775},[696,1340,1341],{"class":698,"line":816},[696,1342,820],{"emptyLinePlaceholder":819},[696,1344,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363],{"class":698,"line":823},[696,1346,826],{"class":771},[696,1348,829],{"class":771},[696,1350,1306],{"class":832},[696,1352,835],{"class":779},[696,1354,1103],{"class":1102},[696,1356,1106],{"class":775},[696,1358,1110],{"class":1109},[696,1360,896],{"class":775},[696,1362,1115],{"class":1102},[696,1364,1118],{"class":775},[696,1366,1367,1369,1371,1373,1375,1377,1379],{"class":698,"line":841},[696,1368,1123],{"class":1102},[696,1370,1126],{"class":779},[696,1372,1129],{"class":775},[696,1374,1075],{"class":832},[696,1376,835],{"class":844},[696,1378,1110],{"class":779},[696,1380,916],{"class":844},[696,1382,1383,1385,1387,1389,1391,1393,1395,1397],{"class":698,"line":854},[696,1384,1123],{"class":1102},[696,1386,1144],{"class":779},[696,1388,1129],{"class":775},[696,1390,1149],{"class":771},[696,1392,1152],{"class":832},[696,1394,835],{"class":844},[696,1396,1110],{"class":779},[696,1398,916],{"class":844},[696,1400,1401],{"class":698,"line":864},[696,1402,820],{"emptyLinePlaceholder":819},[696,1404,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435],{"class":698,"line":890},[696,1406,1167],{"class":779},[696,1408,1170],{"class":775},[696,1410,1173],{"class":832},[696,1412,835],{"class":844},[696,1414,1178],{"class":775},[696,1416,1181],{"class":844},[696,1418,848],{"class":775},[696,1420,776],{"class":775},[696,1422,1188],{"class":844},[696,1424,848],{"class":775},[696,1426,1144],{"class":779},[696,1428,1170],{"class":775},[696,1430,1197],{"class":779},[696,1432,783],{"class":775},[696,1434,783],{"class":775},[696,1436,916],{"class":844},[696,1438,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485],{"class":698,"line":902},[696,1440,1167],{"class":779},[696,1442,1170],{"class":775},[696,1444,1173],{"class":832},[696,1446,835],{"class":844},[696,1448,1178],{"class":775},[696,1450,1218],{"class":844},[696,1452,848],{"class":775},[696,1454,776],{"class":775},[696,1456,1225],{"class":844},[696,1458,848],{"class":775},[696,1460,1144],{"class":779},[696,1462,1170],{"class":775},[696,1464,1234],{"class":779},[696,1466,1170],{"class":775},[696,1468,1239],{"class":779},[696,1470,1242],{"class":775},[696,1472,1245],{"class":844},[696,1474,848],{"class":775},[696,1476,1144],{"class":779},[696,1478,1170],{"class":775},[696,1480,1254],{"class":779},[696,1482,783],{"class":775},[696,1484,783],{"class":775},[696,1486,916],{"class":844},[696,1488,1489],{"class":698,"line":910},[696,1490,820],{"emptyLinePlaceholder":819},[696,1492,1493,1495,1497,1499,1501,1503],{"class":698,"line":1267},[696,1494,1270],{"class":771},[696,1496,776],{"class":775},[696,1498,1275],{"class":844},[696,1500,848],{"class":775},[696,1502,1281],{"class":1280},[696,1504,1284],{"class":775},[696,1506,1507,1509],{"class":698,"line":1287},[696,1508,913],{"class":775},[696,1510,916],{"class":779},[618,1512,1513],{},"One request, one log line with all context:",[686,1515,1518],{"className":688,"code":1516,"filename":1517,"language":691,"meta":692,"style":692},"10:23:45 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n  ├─ user: id=usr_123\n  ├─ cart: items=3 total=14999\n  └─ requestId: a1b2c3d4-...\n","Terminal output",[622,1519,1520,1531,1542,1562],{"__ignoreMap":692},[696,1521,1522,1525,1528],{"class":698,"line":699},[696,1523,1524],{"class":702},"10:23:45",[696,1526,1527],{"class":705}," INFO",[696,1529,1530],{"class":779}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n",[696,1532,1533,1536,1539],{"class":698,"line":798},[696,1534,1535],{"class":702},"  ├─",[696,1537,1538],{"class":705}," user:",[696,1540,1541],{"class":705}," id=usr_123\n",[696,1543,1544,1546,1549,1552,1556,1559],{"class":698,"line":816},[696,1545,1535],{"class":702},[696,1547,1548],{"class":705}," cart:",[696,1550,1551],{"class":705}," items=",[696,1553,1555],{"class":1554},"sbssI","3",[696,1557,1558],{"class":705}," total=",[696,1560,1561],{"class":1554},"14999\n",[696,1563,1564,1567,1570],{"class":698,"line":823},[696,1565,1566],{"class":702},"  └─",[696,1568,1569],{"class":705}," requestId:",[696,1571,1572],{"class":705}," a1b2c3d4-...\n",[618,1574,1575,1576,1581,1582,1585,1586,1592,1593,1596,1597,1600,1601,1605],{},"Nitro uses ",[1577,1578,1579],"strong",{},[622,1580,624],{}," (event-bound scope), not ",[622,1583,1584],{},"AsyncLocalStorage",", so ",[1577,1587,1588,1591],{},[622,1589,1590],{},"log.fork()"," is not available"," here yet. For AI SDK streaming responses, evlog defers wide-event emit until the response body finishes so ",[622,1594,1595],{},"createAILogger(log)"," metadata stays on the same request event. Post-emit warnings only apply when code calls ",[622,1598,1599],{},"set()"," after the wide event has actually emitted, for example in non-streaming handlers or background work. See ",[663,1602,1604],{"href":1603},"\u002Flearn\u002Fwide-events#after-emit-sealing-and-background-work","After emit"," in Wide events.",[674,1607,1609],{"id":1608},"error-handling","Error Handling",[618,1611,1612,1615,1616,1619,1620,1623,1624,1627],{},[622,1613,1614],{},"createError"," produces structured errors with ",[622,1617,1618],{},"why",", ",[622,1621,1622],{},"fix",", and ",[622,1625,1626],{},"link"," fields that help both humans and AI agents understand what went wrong.",[683,1629,1630,1808],{},[686,1631,1634],{"className":761,"code":1632,"filename":1633,"language":764,"meta":692,"style":692},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger, createError } from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineHandler(async (event) => {\n  const log = useLogger(event)\n\n  throw createError({\n    status: 402,\n    message: 'Payment failed',\n    why: 'Card declined by issuer',\n    fix: 'Try a different payment method',\n  })\n})\n","routes\u002Fapi\u002Fpayment.post.ts (v3)",[622,1635,1636,1654,1677,1681,1703,1719,1723,1734,1746,1762,1778,1794,1801],{"__ignoreMap":692},[696,1637,1638,1640,1642,1644,1646,1648,1650,1652],{"class":698,"line":699},[696,1639,772],{"class":771},[696,1641,776],{"class":775},[696,1643,1055],{"class":779},[696,1645,783],{"class":775},[696,1647,786],{"class":771},[696,1649,789],{"class":775},[696,1651,1064],{"class":705},[696,1653,795],{"class":775},[696,1655,1656,1658,1660,1662,1664,1667,1669,1671,1673,1675],{"class":698,"line":798},[696,1657,772],{"class":771},[696,1659,776],{"class":775},[696,1661,1075],{"class":779},[696,1663,1242],{"class":775},[696,1665,1666],{"class":779}," createError",[696,1668,783],{"class":775},[696,1670,786],{"class":771},[696,1672,789],{"class":775},[696,1674,811],{"class":705},[696,1676,795],{"class":775},[696,1678,1679],{"class":698,"line":816},[696,1680,820],{"emptyLinePlaceholder":819},[696,1682,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701],{"class":698,"line":823},[696,1684,826],{"class":771},[696,1686,829],{"class":771},[696,1688,1055],{"class":832},[696,1690,835],{"class":779},[696,1692,1103],{"class":1102},[696,1694,1106],{"class":775},[696,1696,1110],{"class":1109},[696,1698,896],{"class":775},[696,1700,1115],{"class":1102},[696,1702,1118],{"class":775},[696,1704,1705,1707,1709,1711,1713,1715,1717],{"class":698,"line":841},[696,1706,1123],{"class":1102},[696,1708,1126],{"class":779},[696,1710,1129],{"class":775},[696,1712,1075],{"class":832},[696,1714,835],{"class":844},[696,1716,1110],{"class":779},[696,1718,916],{"class":844},[696,1720,1721],{"class":698,"line":854},[696,1722,820],{"emptyLinePlaceholder":819},[696,1724,1725,1728,1730,1732],{"class":698,"line":864},[696,1726,1727],{"class":771},"  throw",[696,1729,1666],{"class":832},[696,1731,835],{"class":844},[696,1733,838],{"class":775},[696,1735,1736,1739,1741,1744],{"class":698,"line":890},[696,1737,1738],{"class":844},"    status",[696,1740,848],{"class":775},[696,1742,1743],{"class":1554}," 402",[696,1745,899],{"class":775},[696,1747,1748,1751,1753,1755,1758,1760],{"class":698,"line":902},[696,1749,1750],{"class":844},"    message",[696,1752,848],{"class":775},[696,1754,789],{"class":775},[696,1756,1757],{"class":705},"Payment failed",[696,1759,884],{"class":775},[696,1761,899],{"class":775},[696,1763,1764,1767,1769,1771,1774,1776],{"class":698,"line":910},[696,1765,1766],{"class":844},"    why",[696,1768,848],{"class":775},[696,1770,789],{"class":775},[696,1772,1773],{"class":705},"Card declined by issuer",[696,1775,884],{"class":775},[696,1777,899],{"class":775},[696,1779,1780,1783,1785,1787,1790,1792],{"class":698,"line":1267},[696,1781,1782],{"class":844},"    fix",[696,1784,848],{"class":775},[696,1786,789],{"class":775},[696,1788,1789],{"class":705},"Try a different payment method",[696,1791,884],{"class":775},[696,1793,899],{"class":775},[696,1795,1796,1799],{"class":698,"line":1287},[696,1797,1798],{"class":775},"  }",[696,1800,916],{"class":844},[696,1802,1804,1806],{"class":698,"line":1803},13,[696,1805,913],{"class":775},[696,1807,916],{"class":779},[686,1809,1812],{"className":761,"code":1810,"filename":1811,"language":764,"meta":692,"style":692},"import { defineEventHandler } from 'h3'\nimport { useLogger } from 'evlog\u002Fnitro'\nimport { createError } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  throw createError({\n    status: 402,\n    message: 'Payment failed',\n    why: 'Card declined by issuer',\n    fix: 'Try a different payment method',\n  })\n})\n","routes\u002Fapi\u002Fpayment.post.ts (v2)",[622,1813,1814,1832,1850,1869,1873,1895,1911,1915,1925,1935,1949,1963,1977,1983],{"__ignoreMap":692},[696,1815,1816,1818,1820,1822,1824,1826,1828,1830],{"class":698,"line":699},[696,1817,772],{"class":771},[696,1819,776],{"class":775},[696,1821,1306],{"class":779},[696,1823,783],{"class":775},[696,1825,786],{"class":771},[696,1827,789],{"class":775},[696,1829,678],{"class":705},[696,1831,795],{"class":775},[696,1833,1834,1836,1838,1840,1842,1844,1846,1848],{"class":698,"line":798},[696,1835,772],{"class":771},[696,1837,776],{"class":775},[696,1839,1075],{"class":779},[696,1841,783],{"class":775},[696,1843,786],{"class":771},[696,1845,789],{"class":775},[696,1847,955],{"class":705},[696,1849,795],{"class":775},[696,1851,1852,1854,1856,1858,1860,1862,1864,1867],{"class":698,"line":816},[696,1853,772],{"class":771},[696,1855,776],{"class":775},[696,1857,1666],{"class":779},[696,1859,783],{"class":775},[696,1861,786],{"class":771},[696,1863,789],{"class":775},[696,1865,1866],{"class":705},"evlog",[696,1868,795],{"class":775},[696,1870,1871],{"class":698,"line":823},[696,1872,820],{"emptyLinePlaceholder":819},[696,1874,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893],{"class":698,"line":841},[696,1876,826],{"class":771},[696,1878,829],{"class":771},[696,1880,1306],{"class":832},[696,1882,835],{"class":779},[696,1884,1103],{"class":1102},[696,1886,1106],{"class":775},[696,1888,1110],{"class":1109},[696,1890,896],{"class":775},[696,1892,1115],{"class":1102},[696,1894,1118],{"class":775},[696,1896,1897,1899,1901,1903,1905,1907,1909],{"class":698,"line":854},[696,1898,1123],{"class":1102},[696,1900,1126],{"class":779},[696,1902,1129],{"class":775},[696,1904,1075],{"class":832},[696,1906,835],{"class":844},[696,1908,1110],{"class":779},[696,1910,916],{"class":844},[696,1912,1913],{"class":698,"line":864},[696,1914,820],{"emptyLinePlaceholder":819},[696,1916,1917,1919,1921,1923],{"class":698,"line":890},[696,1918,1727],{"class":771},[696,1920,1666],{"class":832},[696,1922,835],{"class":844},[696,1924,838],{"class":775},[696,1926,1927,1929,1931,1933],{"class":698,"line":902},[696,1928,1738],{"class":844},[696,1930,848],{"class":775},[696,1932,1743],{"class":1554},[696,1934,899],{"class":775},[696,1936,1937,1939,1941,1943,1945,1947],{"class":698,"line":910},[696,1938,1750],{"class":844},[696,1940,848],{"class":775},[696,1942,789],{"class":775},[696,1944,1757],{"class":705},[696,1946,884],{"class":775},[696,1948,899],{"class":775},[696,1950,1951,1953,1955,1957,1959,1961],{"class":698,"line":1267},[696,1952,1766],{"class":844},[696,1954,848],{"class":775},[696,1956,789],{"class":775},[696,1958,1773],{"class":705},[696,1960,884],{"class":775},[696,1962,899],{"class":775},[696,1964,1965,1967,1969,1971,1973,1975],{"class":698,"line":1287},[696,1966,1782],{"class":844},[696,1968,848],{"class":775},[696,1970,789],{"class":775},[696,1972,1789],{"class":705},[696,1974,884],{"class":775},[696,1976,899],{"class":775},[696,1978,1979,1981],{"class":698,"line":1803},[696,1980,1798],{"class":775},[696,1982,916],{"class":844},[696,1984,1986,1988],{"class":698,"line":1985},14,[696,1987,913],{"class":775},[696,1989,916],{"class":779},[1991,1992,1994,1995,1997,1998,2000,2001,1997,2003,2005],"callout",{"color":1993,"icon":13},"info","In Nitro v3, import ",[622,1996,1614],{}," from ",[622,1999,811],{}," - it wraps the Nitro error handler. In Nitro v2, import ",[622,2002,1614],{},[622,2004,1866],{}," directly.",[674,2007,557],{"id":2008},"configuration",[618,2010,2011,2012,2015,2016,1619,2019,1619,2022,1619,2025,2028],{},"See the ",[663,2013,2014],{"href":558},"Configuration reference"," for all available options (",[622,2017,2018],{},"enabled",[622,2020,2021],{},"pretty",[622,2023,2024],{},"silent",[622,2026,2027],{},"sampling",", etc.).",[618,2030,2031,2032,2038,2039,2042],{},"The same settings can live in an ",[663,2033,2035],{"href":2034},"\u002Fcli\u002Fconfig#nuxt-and-nitro-load-it-for-you",[622,2036,2037],{},"evlog.config.ts"," at the root of the app. The module loads it on its own, and the options passed to ",[622,2040,2041],{},"evlog()"," override it.",[678,2044,2046],{"id":2045},"route-filtering","Route Filtering",[618,2048,2049,2050,2053,2054,2057,2058,2061],{},"Use ",[622,2051,2052],{},"include"," and ",[622,2055,2056],{},"exclude"," to control which routes are logged, and ",[622,2059,2060],{},"routes"," to assign different service names to different route groups:",[683,2063,2064,2261],{},[686,2065,2067],{"className":761,"code":2066,"filename":763,"language":764,"meta":692,"style":692},"import { defineConfig } from 'nitro'\nimport evlog from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineConfig({\n  modules: [\n    evlog({\n      include: ['\u002Fapi\u002F**'],\n      exclude: ['\u002Fapi\u002Fhealth'],\n      routes: {\n        '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n        '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n      },\n    })\n  ],\n})\n",[622,2068,2069,2087,2101,2105,2117,2125,2133,2155,2175,2184,2211,2237,2242,2248,2254],{"__ignoreMap":692},[696,2070,2071,2073,2075,2077,2079,2081,2083,2085],{"class":698,"line":699},[696,2072,772],{"class":771},[696,2074,776],{"class":775},[696,2076,780],{"class":779},[696,2078,783],{"class":775},[696,2080,786],{"class":771},[696,2082,789],{"class":775},[696,2084,792],{"class":705},[696,2086,795],{"class":775},[696,2088,2089,2091,2093,2095,2097,2099],{"class":698,"line":798},[696,2090,772],{"class":771},[696,2092,803],{"class":779},[696,2094,806],{"class":771},[696,2096,789],{"class":775},[696,2098,811],{"class":705},[696,2100,795],{"class":775},[696,2102,2103],{"class":698,"line":816},[696,2104,820],{"emptyLinePlaceholder":819},[696,2106,2107,2109,2111,2113,2115],{"class":698,"line":823},[696,2108,826],{"class":771},[696,2110,829],{"class":771},[696,2112,780],{"class":832},[696,2114,835],{"class":779},[696,2116,838],{"class":775},[696,2118,2119,2121,2123],{"class":698,"line":841},[696,2120,845],{"class":844},[696,2122,848],{"class":775},[696,2124,851],{"class":779},[696,2126,2127,2129,2131],{"class":698,"line":854},[696,2128,857],{"class":832},[696,2130,835],{"class":779},[696,2132,838],{"class":775},[696,2134,2135,2138,2140,2143,2145,2148,2150,2153],{"class":698,"line":864},[696,2136,2137],{"class":844},"      include",[696,2139,848],{"class":775},[696,2141,2142],{"class":779}," [",[696,2144,884],{"class":775},[696,2146,2147],{"class":705},"\u002Fapi\u002F**",[696,2149,884],{"class":775},[696,2151,2152],{"class":779},"]",[696,2154,899],{"class":775},[696,2156,2157,2160,2162,2164,2166,2169,2171,2173],{"class":698,"line":890},[696,2158,2159],{"class":844},"      exclude",[696,2161,848],{"class":775},[696,2163,2142],{"class":779},[696,2165,884],{"class":775},[696,2167,2168],{"class":705},"\u002Fapi\u002Fhealth",[696,2170,884],{"class":775},[696,2172,2152],{"class":779},[696,2174,899],{"class":775},[696,2176,2177,2180,2182],{"class":698,"line":902},[696,2178,2179],{"class":844},"      routes",[696,2181,848],{"class":775},[696,2183,1118],{"class":775},[696,2185,2186,2189,2192,2194,2196,2198,2200,2202,2204,2207,2209],{"class":698,"line":910},[696,2187,2188],{"class":775},"        '",[696,2190,2191],{"class":844},"\u002Fapi\u002Fauth\u002F**",[696,2193,884],{"class":775},[696,2195,848],{"class":775},[696,2197,776],{"class":775},[696,2199,874],{"class":844},[696,2201,848],{"class":775},[696,2203,789],{"class":775},[696,2205,2206],{"class":705},"auth-service",[696,2208,884],{"class":775},[696,2210,887],{"class":775},[696,2212,2213,2215,2218,2220,2222,2224,2226,2228,2230,2233,2235],{"class":698,"line":1267},[696,2214,2188],{"class":775},[696,2216,2217],{"class":844},"\u002Fapi\u002Fpayment\u002F**",[696,2219,884],{"class":775},[696,2221,848],{"class":775},[696,2223,776],{"class":775},[696,2225,874],{"class":844},[696,2227,848],{"class":775},[696,2229,789],{"class":775},[696,2231,2232],{"class":705},"payment-service",[696,2234,884],{"class":775},[696,2236,887],{"class":775},[696,2238,2239],{"class":698,"line":1287},[696,2240,2241],{"class":775},"      },\n",[696,2243,2244,2246],{"class":698,"line":1803},[696,2245,893],{"class":775},[696,2247,916],{"class":779},[696,2249,2250,2252],{"class":698,"line":1985},[696,2251,905],{"class":779},[696,2253,899],{"class":775},[696,2255,2257,2259],{"class":698,"line":2256},15,[696,2258,913],{"class":775},[696,2260,916],{"class":779},[686,2262,2264],{"className":761,"code":2263,"filename":920,"language":764,"meta":692,"style":692},"import { defineNitroConfig } from 'nitropack\u002Fconfig'\nimport evlog from 'evlog\u002Fnitro'\n\nexport default defineNitroConfig({\n  modules: [\n    evlog({\n      include: ['\u002Fapi\u002F**'],\n      exclude: ['\u002Fapi\u002Fhealth'],\n      routes: {\n        '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n        '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n      },\n    })\n  ],\n})\n",[622,2265,2266,2284,2298,2302,2314,2322,2330,2348,2366,2374,2398,2422,2426,2432,2438],{"__ignoreMap":692},[696,2267,2268,2270,2272,2274,2276,2278,2280,2282],{"class":698,"line":699},[696,2269,772],{"class":771},[696,2271,776],{"class":775},[696,2273,931],{"class":779},[696,2275,783],{"class":775},[696,2277,786],{"class":771},[696,2279,789],{"class":775},[696,2281,940],{"class":705},[696,2283,795],{"class":775},[696,2285,2286,2288,2290,2292,2294,2296],{"class":698,"line":798},[696,2287,772],{"class":771},[696,2289,803],{"class":779},[696,2291,806],{"class":771},[696,2293,789],{"class":775},[696,2295,955],{"class":705},[696,2297,795],{"class":775},[696,2299,2300],{"class":698,"line":816},[696,2301,820],{"emptyLinePlaceholder":819},[696,2303,2304,2306,2308,2310,2312],{"class":698,"line":823},[696,2305,826],{"class":771},[696,2307,829],{"class":771},[696,2309,931],{"class":832},[696,2311,835],{"class":779},[696,2313,838],{"class":775},[696,2315,2316,2318,2320],{"class":698,"line":841},[696,2317,845],{"class":844},[696,2319,848],{"class":775},[696,2321,851],{"class":779},[696,2323,2324,2326,2328],{"class":698,"line":854},[696,2325,857],{"class":832},[696,2327,835],{"class":779},[696,2329,838],{"class":775},[696,2331,2332,2334,2336,2338,2340,2342,2344,2346],{"class":698,"line":864},[696,2333,2137],{"class":844},[696,2335,848],{"class":775},[696,2337,2142],{"class":779},[696,2339,884],{"class":775},[696,2341,2147],{"class":705},[696,2343,884],{"class":775},[696,2345,2152],{"class":779},[696,2347,899],{"class":775},[696,2349,2350,2352,2354,2356,2358,2360,2362,2364],{"class":698,"line":890},[696,2351,2159],{"class":844},[696,2353,848],{"class":775},[696,2355,2142],{"class":779},[696,2357,884],{"class":775},[696,2359,2168],{"class":705},[696,2361,884],{"class":775},[696,2363,2152],{"class":779},[696,2365,899],{"class":775},[696,2367,2368,2370,2372],{"class":698,"line":902},[696,2369,2179],{"class":844},[696,2371,848],{"class":775},[696,2373,1118],{"class":775},[696,2375,2376,2378,2380,2382,2384,2386,2388,2390,2392,2394,2396],{"class":698,"line":910},[696,2377,2188],{"class":775},[696,2379,2191],{"class":844},[696,2381,884],{"class":775},[696,2383,848],{"class":775},[696,2385,776],{"class":775},[696,2387,874],{"class":844},[696,2389,848],{"class":775},[696,2391,789],{"class":775},[696,2393,2206],{"class":705},[696,2395,884],{"class":775},[696,2397,887],{"class":775},[696,2399,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420],{"class":698,"line":1267},[696,2401,2188],{"class":775},[696,2403,2217],{"class":844},[696,2405,884],{"class":775},[696,2407,848],{"class":775},[696,2409,776],{"class":775},[696,2411,874],{"class":844},[696,2413,848],{"class":775},[696,2415,789],{"class":775},[696,2417,2232],{"class":705},[696,2419,884],{"class":775},[696,2421,887],{"class":775},[696,2423,2424],{"class":698,"line":1287},[696,2425,2241],{"class":775},[696,2427,2428,2430],{"class":698,"line":1803},[696,2429,893],{"class":775},[696,2431,916],{"class":779},[696,2433,2434,2436],{"class":698,"line":1985},[696,2435,905],{"class":779},[696,2437,899],{"class":775},[696,2439,2440,2442],{"class":698,"line":2256},[696,2441,913],{"class":775},[696,2443,916],{"class":779},[1991,2445,2448,2451,2452,2053,2454,2456],{"color":2446,"icon":2447},"warning","i-lucide-alert-triangle",[1577,2449,2450],{},"Exclusions take precedence."," If a path matches both ",[622,2453,2052],{},[622,2455,2056],{},", it will be excluded.",[674,2458,2460],{"id":2459},"drain-enrichers","Drain & Enrichers",[618,2462,2463,2464,2053,2467,2470,2471,2475],{},"Set ",[622,2465,2466],{},"drain",[622,2468,2469],{},"enrich"," in ",[663,2472,2473],{"href":2034},[622,2474,2037],{},", or hook them from a Nitro plugin as below. Both receive every event.",[678,2477,2479],{"id":2478},"drain-plugin","Drain Plugin",[686,2481,2484],{"className":761,"code":2482,"filename":2483,"language":764,"meta":692,"style":692},"import type { DrainContext } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n  retry: { maxAttempts: 3 },\n})\nconst drain = pipeline(createAxiomDrain())\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', drain)\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[622,2485,2486,2508,2528,2548,2552,2578,2607,2626,2632,2652,2656,2678,2709],{"__ignoreMap":692},[696,2487,2488,2490,2493,2495,2498,2500,2502,2504,2506],{"class":698,"line":699},[696,2489,772],{"class":771},[696,2491,2492],{"class":771}," type",[696,2494,776],{"class":775},[696,2496,2497],{"class":779}," DrainContext",[696,2499,783],{"class":775},[696,2501,786],{"class":771},[696,2503,789],{"class":775},[696,2505,1866],{"class":705},[696,2507,795],{"class":775},[696,2509,2510,2512,2514,2517,2519,2521,2523,2526],{"class":698,"line":798},[696,2511,772],{"class":771},[696,2513,776],{"class":775},[696,2515,2516],{"class":779}," createAxiomDrain",[696,2518,783],{"class":775},[696,2520,786],{"class":771},[696,2522,789],{"class":775},[696,2524,2525],{"class":705},"evlog\u002Faxiom",[696,2527,795],{"class":775},[696,2529,2530,2532,2534,2537,2539,2541,2543,2546],{"class":698,"line":816},[696,2531,772],{"class":771},[696,2533,776],{"class":775},[696,2535,2536],{"class":779}," createDrainPipeline",[696,2538,783],{"class":775},[696,2540,786],{"class":771},[696,2542,789],{"class":775},[696,2544,2545],{"class":705},"evlog\u002Fpipeline",[696,2547,795],{"class":775},[696,2549,2550],{"class":698,"line":823},[696,2551,820],{"emptyLinePlaceholder":819},[696,2553,2554,2557,2560,2563,2565,2568,2571,2574,2576],{"class":698,"line":841},[696,2555,2556],{"class":1102},"const",[696,2558,2559],{"class":779}," pipeline ",[696,2561,2562],{"class":775},"=",[696,2564,2536],{"class":832},[696,2566,2567],{"class":775},"\u003C",[696,2569,2570],{"class":702},"DrainContext",[696,2572,2573],{"class":775},">",[696,2575,835],{"class":779},[696,2577,838],{"class":775},[696,2579,2580,2583,2585,2587,2590,2592,2595,2597,2600,2602,2605],{"class":698,"line":854},[696,2581,2582],{"class":844},"  batch",[696,2584,848],{"class":775},[696,2586,776],{"class":775},[696,2588,2589],{"class":844}," size",[696,2591,848],{"class":775},[696,2593,2594],{"class":1554}," 50",[696,2596,1242],{"class":775},[696,2598,2599],{"class":844}," intervalMs",[696,2601,848],{"class":775},[696,2603,2604],{"class":1554}," 5000",[696,2606,887],{"class":775},[696,2608,2609,2612,2614,2616,2619,2621,2624],{"class":698,"line":864},[696,2610,2611],{"class":844},"  retry",[696,2613,848],{"class":775},[696,2615,776],{"class":775},[696,2617,2618],{"class":844}," maxAttempts",[696,2620,848],{"class":775},[696,2622,2623],{"class":1554}," 3",[696,2625,887],{"class":775},[696,2627,2628,2630],{"class":698,"line":890},[696,2629,913],{"class":775},[696,2631,916],{"class":779},[696,2633,2634,2636,2639,2641,2644,2646,2649],{"class":698,"line":902},[696,2635,2556],{"class":1102},[696,2637,2638],{"class":779}," drain ",[696,2640,2562],{"class":775},[696,2642,2643],{"class":832}," pipeline",[696,2645,835],{"class":779},[696,2647,2648],{"class":832},"createAxiomDrain",[696,2650,2651],{"class":779},"())\n",[696,2653,2654],{"class":698,"line":910},[696,2655,820],{"emptyLinePlaceholder":819},[696,2657,2658,2660,2662,2665,2667,2669,2672,2674,2676],{"class":698,"line":1267},[696,2659,826],{"class":771},[696,2661,829],{"class":771},[696,2663,2664],{"class":832}," defineNitroPlugin",[696,2666,835],{"class":779},[696,2668,835],{"class":775},[696,2670,2671],{"class":1109},"nitroApp",[696,2673,896],{"class":775},[696,2675,1115],{"class":1102},[696,2677,1118],{"class":775},[696,2679,2680,2683,2685,2688,2690,2693,2695,2697,2700,2702,2704,2707],{"class":698,"line":1287},[696,2681,2682],{"class":779},"  nitroApp",[696,2684,1170],{"class":775},[696,2686,2687],{"class":779},"hooks",[696,2689,1170],{"class":775},[696,2691,2692],{"class":832},"hook",[696,2694,835],{"class":844},[696,2696,884],{"class":775},[696,2698,2699],{"class":705},"evlog:drain",[696,2701,884],{"class":775},[696,2703,1242],{"class":775},[696,2705,2706],{"class":779}," drain",[696,2708,916],{"class":844},[696,2710,2711,2713],{"class":698,"line":1803},[696,2712,913],{"class":775},[696,2714,916],{"class":779},[1991,2716,2717,2718,1997,2721,2723,2724,1170],{"color":1993,"icon":13},"For Nitro v3 standalone, use ",[622,2719,2720],{},"definePlugin",[622,2722,792],{}," instead of ",[622,2725,2726],{},"defineNitroPlugin",[678,2728,2730],{"id":2729},"enricher-plugin","Enricher Plugin",[686,2732,2735],{"className":761,"code":2733,"filename":2734,"language":764,"meta":692,"style":692},"import { createUserAgentEnricher, createGeoEnricher } from 'evlog\u002Fenrichers'\n\nconst enrichers = [createUserAgentEnricher(), createGeoEnricher()]\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:enrich', (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  })\n})\n","server\u002Fplugins\u002Fevlog-enrich.ts",[622,2736,2737,2762,2766,2790,2794,2814,2848,2878,2884],{"__ignoreMap":692},[696,2738,2739,2741,2743,2746,2748,2751,2753,2755,2757,2760],{"class":698,"line":699},[696,2740,772],{"class":771},[696,2742,776],{"class":775},[696,2744,2745],{"class":779}," createUserAgentEnricher",[696,2747,1242],{"class":775},[696,2749,2750],{"class":779}," createGeoEnricher",[696,2752,783],{"class":775},[696,2754,786],{"class":771},[696,2756,789],{"class":775},[696,2758,2759],{"class":705},"evlog\u002Fenrichers",[696,2761,795],{"class":775},[696,2763,2764],{"class":698,"line":798},[696,2765,820],{"emptyLinePlaceholder":819},[696,2767,2768,2770,2773,2775,2777,2780,2783,2785,2787],{"class":698,"line":816},[696,2769,2556],{"class":1102},[696,2771,2772],{"class":779}," enrichers ",[696,2774,2562],{"class":775},[696,2776,2142],{"class":779},[696,2778,2779],{"class":832},"createUserAgentEnricher",[696,2781,2782],{"class":779},"()",[696,2784,1242],{"class":775},[696,2786,2750],{"class":832},[696,2788,2789],{"class":779},"()]\n",[696,2791,2792],{"class":698,"line":823},[696,2793,820],{"emptyLinePlaceholder":819},[696,2795,2796,2798,2800,2802,2804,2806,2808,2810,2812],{"class":698,"line":841},[696,2797,826],{"class":771},[696,2799,829],{"class":771},[696,2801,2664],{"class":832},[696,2803,835],{"class":779},[696,2805,835],{"class":775},[696,2807,2671],{"class":1109},[696,2809,896],{"class":775},[696,2811,1115],{"class":1102},[696,2813,1118],{"class":775},[696,2815,2816,2818,2820,2822,2824,2826,2828,2830,2833,2835,2837,2839,2842,2844,2846],{"class":698,"line":854},[696,2817,2682],{"class":779},[696,2819,1170],{"class":775},[696,2821,2687],{"class":779},[696,2823,1170],{"class":775},[696,2825,2692],{"class":832},[696,2827,835],{"class":844},[696,2829,884],{"class":775},[696,2831,2832],{"class":705},"evlog:enrich",[696,2834,884],{"class":775},[696,2836,1242],{"class":775},[696,2838,1106],{"class":775},[696,2840,2841],{"class":1109},"ctx",[696,2843,896],{"class":775},[696,2845,1115],{"class":1102},[696,2847,1118],{"class":775},[696,2849,2850,2853,2855,2857,2860,2863,2866,2869,2872,2874,2876],{"class":698,"line":864},[696,2851,2852],{"class":771},"    for",[696,2854,1106],{"class":844},[696,2856,2556],{"class":1102},[696,2858,2859],{"class":779}," enricher",[696,2861,2862],{"class":775}," of",[696,2864,2865],{"class":779}," enrichers",[696,2867,2868],{"class":844},") ",[696,2870,2871],{"class":832},"enricher",[696,2873,835],{"class":844},[696,2875,2841],{"class":779},[696,2877,916],{"class":844},[696,2879,2880,2882],{"class":698,"line":890},[696,2881,1798],{"class":775},[696,2883,916],{"class":844},[696,2885,2886,2888],{"class":698,"line":902},[696,2887,913],{"class":775},[696,2889,916],{"class":779},[1991,2891,2011,2894,2053,2896,2898],{"color":2892,"icon":2893},"neutral","i-lucide-arrow-right",[663,2895,158],{"href":163},[663,2897,450],{"href":451}," docs for the full list of available drains and enrichers.",[674,2900,66],{"id":2027},[678,2902,2904],{"id":2903},"head-sampling","Head Sampling",[618,2906,2907],{},"Randomly keep a percentage of logs per level. Runs before the request completes.",[683,2909,2910,3094],{},[686,2911,2913],{"className":761,"code":2912,"filename":763,"language":764,"meta":692,"style":692},"import { defineConfig } from 'nitro'\nimport evlog from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineConfig({\n  modules: [\n    evlog({\n      sampling: {\n        rates: { info: 10, warn: 50, debug: 5 },\n        keep: [\n          { duration: 1000 },\n          { status: 400 },\n        ],\n      },\n    })\n  ],\n})\n",[622,2914,2915,2933,2947,2951,2963,2971,2979,2988,3026,3035,3050,3064,3071,3075,3081,3087],{"__ignoreMap":692},[696,2916,2917,2919,2921,2923,2925,2927,2929,2931],{"class":698,"line":699},[696,2918,772],{"class":771},[696,2920,776],{"class":775},[696,2922,780],{"class":779},[696,2924,783],{"class":775},[696,2926,786],{"class":771},[696,2928,789],{"class":775},[696,2930,792],{"class":705},[696,2932,795],{"class":775},[696,2934,2935,2937,2939,2941,2943,2945],{"class":698,"line":798},[696,2936,772],{"class":771},[696,2938,803],{"class":779},[696,2940,806],{"class":771},[696,2942,789],{"class":775},[696,2944,811],{"class":705},[696,2946,795],{"class":775},[696,2948,2949],{"class":698,"line":816},[696,2950,820],{"emptyLinePlaceholder":819},[696,2952,2953,2955,2957,2959,2961],{"class":698,"line":823},[696,2954,826],{"class":771},[696,2956,829],{"class":771},[696,2958,780],{"class":832},[696,2960,835],{"class":779},[696,2962,838],{"class":775},[696,2964,2965,2967,2969],{"class":698,"line":841},[696,2966,845],{"class":844},[696,2968,848],{"class":775},[696,2970,851],{"class":779},[696,2972,2973,2975,2977],{"class":698,"line":854},[696,2974,857],{"class":832},[696,2976,835],{"class":779},[696,2978,838],{"class":775},[696,2980,2981,2984,2986],{"class":698,"line":864},[696,2982,2983],{"class":844},"      sampling",[696,2985,848],{"class":775},[696,2987,1118],{"class":775},[696,2989,2990,2993,2995,2997,3000,3002,3005,3007,3010,3012,3014,3016,3019,3021,3024],{"class":698,"line":890},[696,2991,2992],{"class":844},"        rates",[696,2994,848],{"class":775},[696,2996,776],{"class":775},[696,2998,2999],{"class":844}," info",[696,3001,848],{"class":775},[696,3003,3004],{"class":1554}," 10",[696,3006,1242],{"class":775},[696,3008,3009],{"class":844}," warn",[696,3011,848],{"class":775},[696,3013,2594],{"class":1554},[696,3015,1242],{"class":775},[696,3017,3018],{"class":844}," debug",[696,3020,848],{"class":775},[696,3022,3023],{"class":1554}," 5",[696,3025,887],{"class":775},[696,3027,3028,3031,3033],{"class":698,"line":902},[696,3029,3030],{"class":844},"        keep",[696,3032,848],{"class":775},[696,3034,851],{"class":779},[696,3036,3037,3040,3043,3045,3048],{"class":698,"line":910},[696,3038,3039],{"class":775},"          {",[696,3041,3042],{"class":844}," duration",[696,3044,848],{"class":775},[696,3046,3047],{"class":1554}," 1000",[696,3049,887],{"class":775},[696,3051,3052,3054,3057,3059,3062],{"class":698,"line":1267},[696,3053,3039],{"class":775},[696,3055,3056],{"class":844}," status",[696,3058,848],{"class":775},[696,3060,3061],{"class":1554}," 400",[696,3063,887],{"class":775},[696,3065,3066,3069],{"class":698,"line":1287},[696,3067,3068],{"class":779},"        ]",[696,3070,899],{"class":775},[696,3072,3073],{"class":698,"line":1803},[696,3074,2241],{"class":775},[696,3076,3077,3079],{"class":698,"line":1985},[696,3078,893],{"class":775},[696,3080,916],{"class":779},[696,3082,3083,3085],{"class":698,"line":2256},[696,3084,905],{"class":779},[696,3086,899],{"class":775},[696,3088,3090,3092],{"class":698,"line":3089},16,[696,3091,913],{"class":775},[696,3093,916],{"class":779},[686,3095,3097],{"className":761,"code":3096,"filename":920,"language":764,"meta":692,"style":692},"import { defineNitroConfig } from 'nitropack\u002Fconfig'\nimport evlog from 'evlog\u002Fnitro'\n\nexport default defineNitroConfig({\n  modules: [\n    evlog({\n      sampling: {\n        rates: { info: 10, warn: 50, debug: 5 },\n        keep: [\n          { duration: 1000 },\n          { status: 400 },\n        ],\n      },\n    })\n  ],\n})\n",[622,3098,3099,3117,3131,3135,3147,3155,3163,3171,3203,3211,3223,3235,3241,3245,3251,3257],{"__ignoreMap":692},[696,3100,3101,3103,3105,3107,3109,3111,3113,3115],{"class":698,"line":699},[696,3102,772],{"class":771},[696,3104,776],{"class":775},[696,3106,931],{"class":779},[696,3108,783],{"class":775},[696,3110,786],{"class":771},[696,3112,789],{"class":775},[696,3114,940],{"class":705},[696,3116,795],{"class":775},[696,3118,3119,3121,3123,3125,3127,3129],{"class":698,"line":798},[696,3120,772],{"class":771},[696,3122,803],{"class":779},[696,3124,806],{"class":771},[696,3126,789],{"class":775},[696,3128,955],{"class":705},[696,3130,795],{"class":775},[696,3132,3133],{"class":698,"line":816},[696,3134,820],{"emptyLinePlaceholder":819},[696,3136,3137,3139,3141,3143,3145],{"class":698,"line":823},[696,3138,826],{"class":771},[696,3140,829],{"class":771},[696,3142,931],{"class":832},[696,3144,835],{"class":779},[696,3146,838],{"class":775},[696,3148,3149,3151,3153],{"class":698,"line":841},[696,3150,845],{"class":844},[696,3152,848],{"class":775},[696,3154,851],{"class":779},[696,3156,3157,3159,3161],{"class":698,"line":854},[696,3158,857],{"class":832},[696,3160,835],{"class":779},[696,3162,838],{"class":775},[696,3164,3165,3167,3169],{"class":698,"line":864},[696,3166,2983],{"class":844},[696,3168,848],{"class":775},[696,3170,1118],{"class":775},[696,3172,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201],{"class":698,"line":890},[696,3174,2992],{"class":844},[696,3176,848],{"class":775},[696,3178,776],{"class":775},[696,3180,2999],{"class":844},[696,3182,848],{"class":775},[696,3184,3004],{"class":1554},[696,3186,1242],{"class":775},[696,3188,3009],{"class":844},[696,3190,848],{"class":775},[696,3192,2594],{"class":1554},[696,3194,1242],{"class":775},[696,3196,3018],{"class":844},[696,3198,848],{"class":775},[696,3200,3023],{"class":1554},[696,3202,887],{"class":775},[696,3204,3205,3207,3209],{"class":698,"line":902},[696,3206,3030],{"class":844},[696,3208,848],{"class":775},[696,3210,851],{"class":779},[696,3212,3213,3215,3217,3219,3221],{"class":698,"line":910},[696,3214,3039],{"class":775},[696,3216,3042],{"class":844},[696,3218,848],{"class":775},[696,3220,3047],{"class":1554},[696,3222,887],{"class":775},[696,3224,3225,3227,3229,3231,3233],{"class":698,"line":1267},[696,3226,3039],{"class":775},[696,3228,3056],{"class":844},[696,3230,848],{"class":775},[696,3232,3061],{"class":1554},[696,3234,887],{"class":775},[696,3236,3237,3239],{"class":698,"line":1287},[696,3238,3068],{"class":779},[696,3240,899],{"class":775},[696,3242,3243],{"class":698,"line":1803},[696,3244,2241],{"class":775},[696,3246,3247,3249],{"class":698,"line":1985},[696,3248,893],{"class":775},[696,3250,916],{"class":779},[696,3252,3253,3255],{"class":698,"line":2256},[696,3254,905],{"class":779},[696,3256,899],{"class":775},[696,3258,3259,3261],{"class":698,"line":3089},[696,3260,913],{"class":775},[696,3262,916],{"class":779},[618,3264,3265],{},"Each level is a percentage from 0 to 100. Levels you don't configure default to 100% (keep everything).",[678,3267,3269],{"id":3268},"custom-tail-sampling","Custom Tail Sampling",[618,3271,3272,3273,3276],{},"For conditions beyond status, duration, and path, use the ",[622,3274,3275],{},"evlog:emit:keep"," hook:",[686,3278,3281],{"className":761,"code":3279,"filename":3280,"language":764,"meta":692,"style":692},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:emit:keep', (ctx) => {\n    const user = ctx.context.user as { premium?: boolean } | undefined\n    if (user?.premium) ctx.shouldKeep = true\n  })\n})\n","server\u002Fplugins\u002Fevlog-sampling.ts",[622,3282,3283,3303,3335,3379,3408,3414],{"__ignoreMap":692},[696,3284,3285,3287,3289,3291,3293,3295,3297,3299,3301],{"class":698,"line":699},[696,3286,826],{"class":771},[696,3288,829],{"class":771},[696,3290,2664],{"class":832},[696,3292,835],{"class":779},[696,3294,835],{"class":775},[696,3296,2671],{"class":1109},[696,3298,896],{"class":775},[696,3300,1115],{"class":1102},[696,3302,1118],{"class":775},[696,3304,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3327,3329,3331,3333],{"class":698,"line":798},[696,3306,2682],{"class":779},[696,3308,1170],{"class":775},[696,3310,2687],{"class":779},[696,3312,1170],{"class":775},[696,3314,2692],{"class":832},[696,3316,835],{"class":844},[696,3318,884],{"class":775},[696,3320,3275],{"class":705},[696,3322,884],{"class":775},[696,3324,1242],{"class":775},[696,3326,1106],{"class":775},[696,3328,2841],{"class":1109},[696,3330,896],{"class":775},[696,3332,1115],{"class":1102},[696,3334,1118],{"class":775},[696,3336,3337,3340,3342,3344,3347,3349,3352,3354,3357,3360,3362,3365,3368,3371,3373,3376],{"class":698,"line":816},[696,3338,3339],{"class":1102},"    const",[696,3341,1181],{"class":779},[696,3343,1129],{"class":775},[696,3345,3346],{"class":779}," ctx",[696,3348,1170],{"class":775},[696,3350,3351],{"class":779},"context",[696,3353,1170],{"class":775},[696,3355,3356],{"class":779},"user",[696,3358,3359],{"class":771}," as",[696,3361,776],{"class":775},[696,3363,3364],{"class":844}," premium",[696,3366,3367],{"class":775},"?:",[696,3369,3370],{"class":702}," boolean",[696,3372,783],{"class":775},[696,3374,3375],{"class":775}," |",[696,3377,3378],{"class":702}," undefined\n",[696,3380,3381,3384,3386,3388,3391,3394,3396,3398,3400,3403,3405],{"class":698,"line":823},[696,3382,3383],{"class":771},"    if",[696,3385,1106],{"class":844},[696,3387,3356],{"class":779},[696,3389,3390],{"class":775},"?.",[696,3392,3393],{"class":779},"premium",[696,3395,2868],{"class":844},[696,3397,2841],{"class":779},[696,3399,1170],{"class":775},[696,3401,3402],{"class":779},"shouldKeep",[696,3404,1129],{"class":775},[696,3406,3407],{"class":1280}," true\n",[696,3409,3410,3412],{"class":698,"line":841},[696,3411,1798],{"class":775},[696,3413,916],{"class":844},[696,3415,3416,3418],{"class":698,"line":854},[696,3417,913],{"class":775},[696,3419,916],{"class":779},[1991,3421,3422,3423,3426],{"color":1993,"icon":13},"Errors are always kept by default. You have to explicitly set ",[622,3424,3425],{},"error: 0"," to drop them.",[674,3428,3430],{"id":3429},"next-steps","Next Steps",[618,3432,3433,3434,3436],{},"Deepen your ",[1577,3435,265],{}," integration:",[635,3438,3439,3444,3449,3454],{},[638,3440,3441,3443],{},[663,3442,51],{"href":52},": Design comprehensive events with context layering",[638,3445,3446,3448],{},[663,3447,158],{"href":163},": Send logs to Axiom, Sentry, PostHog, and more",[638,3450,3451,3453],{},[663,3452,66],{"href":67},": Control log volume with head and tail sampling",[638,3455,3456,3458,3459,1619,3461,1623,3463,3465],{},[663,3457,56],{"href":57},": Throw errors with ",[622,3460,1618],{},[622,3462,1622],{},[622,3464,1626],{}," fields",[3467,3468,3469],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":692,"searchDepth":798,"depth":798,"links":3471},[3472,3476,3477,3478,3481,3485,3489],{"id":676,"depth":798,"text":25,"children":3473},[3474,3475],{"id":680,"depth":816,"text":681},{"id":755,"depth":816,"text":756},{"id":1032,"depth":798,"text":51},{"id":1608,"depth":798,"text":1609},{"id":2008,"depth":798,"text":557,"children":3479},[3480],{"id":2045,"depth":816,"text":2046},{"id":2459,"depth":798,"text":2460,"children":3482},[3483,3484],{"id":2478,"depth":816,"text":2479},{"id":2729,"depth":816,"text":2730},{"id":2027,"depth":798,"text":66,"children":3486},[3487,3488],{"id":2903,"depth":816,"text":2904},{"id":3268,"depth":816,"text":3269},{"id":3429,"depth":798,"text":3430},"One module covers Nitro v3 and v2. Reach the request logger with `useLogger(event)`, and set drain and enrichers from Nitro plugins.","md",null,{},{"title":265,"icon":268},{"title":265,"description":3490},"FuixWS-39tZvebG0hZd23GuoGbmVBfTPeXgPEIvsNJo",[3498,3500],{"title":260,"path":261,"stem":262,"description":3499,"icon":263,"children":-1},"Wire the handle and handleError hooks once, and every SvelteKit request carries a logger on `event.locals.log` until the response ends.",{"title":270,"path":271,"stem":272,"description":3501,"icon":273,"children":-1},"Automatic wide events, structured errors, and logging in TanStack Start API routes and server functions.",1791636523582]