[{"data":1,"prerenderedAt":3476},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-nitro":612,"-integrate-frameworks-nitro-surround":3471},[4,35,85,138,318,453,489,548,587],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133],{"title":41,"path":91,"stem":92,"icon":49},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":94,"path":95,"stem":96,"icon":97},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":99,"path":100,"stem":101,"icon":102},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":104,"path":105,"stem":106,"icon":107},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":109,"path":110,"stem":111,"icon":112},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":114,"path":115,"stem":116,"icon":117},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":119,"path":120,"stem":121,"icon":122},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":124,"path":125,"stem":126,"icon":127},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":129,"path":130,"stem":131,"icon":132},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":134,"path":135,"stem":136,"icon":137},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":139,"path":140,"stem":141,"children":142,"page":34},"Integrate","\u002Fintegrate","4.integrate",[143,147,230],{"title":41,"path":144,"stem":145,"icon":146},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":148,"path":149,"stem":150,"children":151,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[152,155,185,210],{"title":41,"path":153,"stem":154,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":156,"path":157,"stem":158,"children":159,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[160,165,170,175,180],{"title":161,"path":162,"stem":163,"icon":164},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":166,"path":167,"stem":168,"icon":169},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":171,"path":172,"stem":173,"icon":174},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":176,"path":177,"stem":178,"icon":179},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":181,"path":182,"stem":183,"icon":184},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":186,"path":187,"stem":188,"children":189,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[190,195,200,205],{"title":191,"path":192,"stem":193,"icon":194},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":196,"path":197,"stem":198,"icon":199},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":201,"path":202,"stem":203,"icon":204},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":206,"path":207,"stem":208,"icon":209},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":211,"path":212,"stem":213,"children":214,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[215,220,225],{"title":216,"path":217,"stem":218,"icon":219},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":221,"path":222,"stem":223,"icon":224},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":226,"path":227,"stem":228,"icon":229},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":231,"path":232,"stem":233,"children":234,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[235,239,244,249,254,259,264,269,274,279,284,289,294,299,303,308,313],{"title":41,"path":236,"stem":237,"icon":238},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":240,"path":241,"stem":242,"icon":243},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":245,"path":246,"stem":247,"icon":248},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":250,"path":251,"stem":252,"icon":253},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":255,"path":256,"stem":257,"icon":258},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":260,"path":261,"stem":262,"icon":263},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":265,"path":266,"stem":267,"icon":268},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":270,"path":271,"stem":272,"icon":273},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":275,"path":276,"stem":277,"icon":278},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":280,"path":281,"stem":282,"icon":283},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":285,"path":286,"stem":287,"icon":288},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":290,"path":291,"stem":292,"icon":293},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":295,"path":296,"stem":297,"icon":298},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":300,"path":301,"stem":302,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":304,"path":305,"stem":306,"icon":307},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":309,"path":310,"stem":311,"icon":312},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":314,"path":315,"stem":316,"icon":317},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":319,"path":320,"stem":321,"children":322,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[323,326,331,359,386,418,439,444,449],{"title":41,"path":324,"stem":325,"icon":107},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":327,"path":328,"stem":329,"icon":330},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":332,"icon":333,"path":334,"stem":335,"children":336,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[337,340,345,350,355],{"title":41,"path":338,"stem":339,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":341,"path":342,"stem":343,"icon":344},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":346,"path":347,"stem":348,"icon":349},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":351,"path":352,"stem":353,"icon":354},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":356,"path":357,"stem":358,"icon":137},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":360,"icon":361,"path":362,"stem":363,"children":364,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[365,368,373,378,382],{"title":41,"path":366,"stem":367,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":369,"path":370,"stem":371,"icon":372},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":374,"path":375,"stem":376,"icon":377},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":379,"path":380,"stem":381,"icon":330},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":383,"path":384,"stem":385,"icon":112},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":387,"icon":388,"path":389,"stem":390,"children":391,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[392,395,400,405,410,414],{"title":41,"path":393,"stem":394,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":396,"path":397,"stem":398,"icon":399},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":401,"path":402,"stem":403,"icon":404},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":406,"path":407,"stem":408,"icon":409},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":411,"path":412,"stem":413,"icon":388},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":415,"path":416,"stem":417,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":356,"icon":112,"path":419,"stem":420,"children":421,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[422,425,430,435],{"title":41,"path":423,"stem":424,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":426,"path":427,"stem":428,"icon":429},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":431,"path":432,"stem":433,"icon":434},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":436,"path":437,"stem":438,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":440,"path":441,"stem":442,"icon":443},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":445,"path":446,"stem":447,"icon":448},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":450,"path":451,"stem":452,"icon":434},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":454,"path":455,"stem":456,"children":457,"page":34},"Libraries","\u002Flibraries","6.libraries",[458,462,467,470,474,479,484],{"title":41,"path":459,"stem":460,"icon":461},"\u002Flibraries\u002Foverview","6.libraries\u002F0.overview","i-lucide-package",{"title":463,"path":464,"stem":465,"icon":466},"Emitting Events","\u002Flibraries\u002Femitting","6.libraries\u002F1.emitting","i-lucide-radio",{"title":56,"path":468,"stem":469,"icon":59},"\u002Flibraries\u002Ferrors","6.libraries\u002F2.errors",{"title":471,"path":472,"stem":473,"icon":132},"Errors Agents Can Act On","\u002Flibraries\u002Fagents","6.libraries\u002F3.agents",{"title":475,"path":476,"stem":477,"icon":478},"Exporting the Catalog","\u002Flibraries\u002Fexporting","6.libraries\u002F4.exporting","i-lucide-file-output",{"title":480,"path":481,"stem":482,"icon":483},"Migrating","\u002Flibraries\u002Fmigrating","6.libraries\u002F5.migrating","i-lucide-route",{"title":485,"path":486,"stem":487,"icon":488},"Testing","\u002Flibraries\u002Ftesting","6.libraries\u002F6.testing","i-lucide-flask-conical",{"title":490,"path":491,"stem":492,"children":493,"page":34},"Extend","\u002Fextend","7.extend",[494,498,503,508,512,517,521,525,529,533,538,543],{"title":41,"path":495,"stem":496,"icon":497},"\u002Fextend\u002Foverview","7.extend\u002F0.overview","i-lucide-blocks",{"title":499,"path":500,"stem":501,"icon":502},"Stream","\u002Fextend\u002Fstream","7.extend\u002F1.stream","i-lucide-radio-tower",{"title":504,"path":505,"stem":506,"icon":507},"Custom framework","\u002Fextend\u002Fcustom-framework","7.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":509,"path":510,"stem":511,"icon":502},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","7.extend\u002F11.diagnostics-channel",{"title":513,"path":514,"stem":515,"icon":516},"FS reader","\u002Fextend\u002Ffs-reader","7.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":415,"path":518,"stem":519,"icon":520},"\u002Fextend\u002Fconsumer-recipes","7.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":522,"path":523,"stem":524,"icon":497},"Plugins","\u002Fextend\u002Fplugins","7.extend\u002F4.plugins",{"title":526,"path":527,"stem":528,"icon":443},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","7.extend\u002F5.custom-enrichers",{"title":530,"path":531,"stem":532,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","7.extend\u002F6.tail-sampling",{"title":534,"path":535,"stem":536,"icon":537},"Identity headers","\u002Fextend\u002Fidentity-headers","7.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":539,"path":540,"stem":541,"icon":542},"Custom drains","\u002Fextend\u002Fcustom-drains","7.extend\u002F8.custom-drains","i-lucide-share-2",{"title":544,"path":545,"stem":546,"icon":547},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","7.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":436,"path":549,"stem":550,"children":551,"page":34},"\u002Freference","8.reference",[552,556,561,564,569,573,578,582],{"title":41,"path":553,"stem":554,"icon":555},"\u002Freference\u002Foverview","8.reference\u002F0.overview","i-lucide-book-marked",{"title":557,"path":558,"stem":559,"icon":560},"Configuration","\u002Freference\u002Fconfiguration","8.reference\u002F1.configuration","i-lucide-settings",{"title":383,"path":562,"stem":563,"icon":112},"\u002Freference\u002Fperformance","8.reference\u002F2.performance",{"title":565,"path":566,"stem":567,"icon":568},"Vite Plugin","\u002Freference\u002Fvite-plugin","8.reference\u002F3.vite-plugin","i-custom-vite",{"title":570,"path":571,"stem":572,"icon":388},"Best Practices","\u002Freference\u002Fbest-practices","8.reference\u002F4.best-practices",{"title":574,"path":575,"stem":576,"icon":577},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","8.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":579,"path":580,"stem":581,"icon":443},"Agent Skills","\u002Freference\u002Fagent-skills","8.reference\u002F6.agent-skills",{"title":583,"path":584,"stem":585,"icon":586},"Cost","\u002Freference\u002Fcost","8.reference\u002F7.cost","i-lucide-receipt",{"title":588,"path":589,"stem":590,"children":591,"page":34},"Compare","\u002Fcompare","9.compare",[592,596,600,604,608],{"title":593,"path":594,"stem":595,"icon":577},"evlog vs Pino","\u002Fcompare\u002Fpino","9.compare\u002F1.pino",{"title":597,"path":598,"stem":599,"icon":204},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","9.compare\u002F2.opentelemetry",{"title":601,"path":602,"stem":603,"icon":577},"evlog vs LogTape","\u002Fcompare\u002Flogtape","9.compare\u002F3.logtape",{"title":605,"path":606,"stem":607,"icon":577},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","9.compare\u002F4.winston",{"title":609,"path":610,"stem":611,"icon":577},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","9.compare\u002F5.consola",{"id":613,"title":255,"body":614,"description":3464,"extension":3465,"links":3466,"meta":3467,"navigation":3468,"path":256,"seo":3469,"stem":257,"__hash__":3470},"docs\u002F4.integrate\u002Fframeworks\u002F04.nitro.md",{"type":615,"value":616,"toc":3444},"minimark",[617,626,673,677,682,753,757,1030,1033,1039,1511,1514,1573,1606,1610,1628,1990,2006,2009,2029,2033,2048,2430,2443,2447,2450,2454,2689,2701,2705,2864,2873,2875,2879,2882,3237,3240,3244,3251,3394,3401,3405,3411,3440],[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":258},"[\"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.).",[678,2030,2032],{"id":2031},"route-filtering","Route Filtering",[618,2034,2035,2036,2039,2040,2043,2044,2047],{},"Use ",[622,2037,2038],{},"include"," and ",[622,2041,2042],{},"exclude"," to control which routes are logged, and ",[622,2045,2046],{},"routes"," to assign different service names to different route groups:",[683,2049,2050,2247],{},[686,2051,2053],{"className":761,"code":2052,"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,2054,2055,2073,2087,2091,2103,2111,2119,2141,2161,2170,2197,2223,2228,2234,2240],{"__ignoreMap":692},[696,2056,2057,2059,2061,2063,2065,2067,2069,2071],{"class":698,"line":699},[696,2058,772],{"class":771},[696,2060,776],{"class":775},[696,2062,780],{"class":779},[696,2064,783],{"class":775},[696,2066,786],{"class":771},[696,2068,789],{"class":775},[696,2070,792],{"class":705},[696,2072,795],{"class":775},[696,2074,2075,2077,2079,2081,2083,2085],{"class":698,"line":798},[696,2076,772],{"class":771},[696,2078,803],{"class":779},[696,2080,806],{"class":771},[696,2082,789],{"class":775},[696,2084,811],{"class":705},[696,2086,795],{"class":775},[696,2088,2089],{"class":698,"line":816},[696,2090,820],{"emptyLinePlaceholder":819},[696,2092,2093,2095,2097,2099,2101],{"class":698,"line":823},[696,2094,826],{"class":771},[696,2096,829],{"class":771},[696,2098,780],{"class":832},[696,2100,835],{"class":779},[696,2102,838],{"class":775},[696,2104,2105,2107,2109],{"class":698,"line":841},[696,2106,845],{"class":844},[696,2108,848],{"class":775},[696,2110,851],{"class":779},[696,2112,2113,2115,2117],{"class":698,"line":854},[696,2114,857],{"class":832},[696,2116,835],{"class":779},[696,2118,838],{"class":775},[696,2120,2121,2124,2126,2129,2131,2134,2136,2139],{"class":698,"line":864},[696,2122,2123],{"class":844},"      include",[696,2125,848],{"class":775},[696,2127,2128],{"class":779}," [",[696,2130,884],{"class":775},[696,2132,2133],{"class":705},"\u002Fapi\u002F**",[696,2135,884],{"class":775},[696,2137,2138],{"class":779},"]",[696,2140,899],{"class":775},[696,2142,2143,2146,2148,2150,2152,2155,2157,2159],{"class":698,"line":890},[696,2144,2145],{"class":844},"      exclude",[696,2147,848],{"class":775},[696,2149,2128],{"class":779},[696,2151,884],{"class":775},[696,2153,2154],{"class":705},"\u002Fapi\u002Fhealth",[696,2156,884],{"class":775},[696,2158,2138],{"class":779},[696,2160,899],{"class":775},[696,2162,2163,2166,2168],{"class":698,"line":902},[696,2164,2165],{"class":844},"      routes",[696,2167,848],{"class":775},[696,2169,1118],{"class":775},[696,2171,2172,2175,2178,2180,2182,2184,2186,2188,2190,2193,2195],{"class":698,"line":910},[696,2173,2174],{"class":775},"        '",[696,2176,2177],{"class":844},"\u002Fapi\u002Fauth\u002F**",[696,2179,884],{"class":775},[696,2181,848],{"class":775},[696,2183,776],{"class":775},[696,2185,874],{"class":844},[696,2187,848],{"class":775},[696,2189,789],{"class":775},[696,2191,2192],{"class":705},"auth-service",[696,2194,884],{"class":775},[696,2196,887],{"class":775},[696,2198,2199,2201,2204,2206,2208,2210,2212,2214,2216,2219,2221],{"class":698,"line":1267},[696,2200,2174],{"class":775},[696,2202,2203],{"class":844},"\u002Fapi\u002Fpayment\u002F**",[696,2205,884],{"class":775},[696,2207,848],{"class":775},[696,2209,776],{"class":775},[696,2211,874],{"class":844},[696,2213,848],{"class":775},[696,2215,789],{"class":775},[696,2217,2218],{"class":705},"payment-service",[696,2220,884],{"class":775},[696,2222,887],{"class":775},[696,2224,2225],{"class":698,"line":1287},[696,2226,2227],{"class":775},"      },\n",[696,2229,2230,2232],{"class":698,"line":1803},[696,2231,893],{"class":775},[696,2233,916],{"class":779},[696,2235,2236,2238],{"class":698,"line":1985},[696,2237,905],{"class":779},[696,2239,899],{"class":775},[696,2241,2243,2245],{"class":698,"line":2242},15,[696,2244,913],{"class":775},[696,2246,916],{"class":779},[686,2248,2250],{"className":761,"code":2249,"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,2251,2252,2270,2284,2288,2300,2308,2316,2334,2352,2360,2384,2408,2412,2418,2424],{"__ignoreMap":692},[696,2253,2254,2256,2258,2260,2262,2264,2266,2268],{"class":698,"line":699},[696,2255,772],{"class":771},[696,2257,776],{"class":775},[696,2259,931],{"class":779},[696,2261,783],{"class":775},[696,2263,786],{"class":771},[696,2265,789],{"class":775},[696,2267,940],{"class":705},[696,2269,795],{"class":775},[696,2271,2272,2274,2276,2278,2280,2282],{"class":698,"line":798},[696,2273,772],{"class":771},[696,2275,803],{"class":779},[696,2277,806],{"class":771},[696,2279,789],{"class":775},[696,2281,955],{"class":705},[696,2283,795],{"class":775},[696,2285,2286],{"class":698,"line":816},[696,2287,820],{"emptyLinePlaceholder":819},[696,2289,2290,2292,2294,2296,2298],{"class":698,"line":823},[696,2291,826],{"class":771},[696,2293,829],{"class":771},[696,2295,931],{"class":832},[696,2297,835],{"class":779},[696,2299,838],{"class":775},[696,2301,2302,2304,2306],{"class":698,"line":841},[696,2303,845],{"class":844},[696,2305,848],{"class":775},[696,2307,851],{"class":779},[696,2309,2310,2312,2314],{"class":698,"line":854},[696,2311,857],{"class":832},[696,2313,835],{"class":779},[696,2315,838],{"class":775},[696,2317,2318,2320,2322,2324,2326,2328,2330,2332],{"class":698,"line":864},[696,2319,2123],{"class":844},[696,2321,848],{"class":775},[696,2323,2128],{"class":779},[696,2325,884],{"class":775},[696,2327,2133],{"class":705},[696,2329,884],{"class":775},[696,2331,2138],{"class":779},[696,2333,899],{"class":775},[696,2335,2336,2338,2340,2342,2344,2346,2348,2350],{"class":698,"line":890},[696,2337,2145],{"class":844},[696,2339,848],{"class":775},[696,2341,2128],{"class":779},[696,2343,884],{"class":775},[696,2345,2154],{"class":705},[696,2347,884],{"class":775},[696,2349,2138],{"class":779},[696,2351,899],{"class":775},[696,2353,2354,2356,2358],{"class":698,"line":902},[696,2355,2165],{"class":844},[696,2357,848],{"class":775},[696,2359,1118],{"class":775},[696,2361,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380,2382],{"class":698,"line":910},[696,2363,2174],{"class":775},[696,2365,2177],{"class":844},[696,2367,884],{"class":775},[696,2369,848],{"class":775},[696,2371,776],{"class":775},[696,2373,874],{"class":844},[696,2375,848],{"class":775},[696,2377,789],{"class":775},[696,2379,2192],{"class":705},[696,2381,884],{"class":775},[696,2383,887],{"class":775},[696,2385,2386,2388,2390,2392,2394,2396,2398,2400,2402,2404,2406],{"class":698,"line":1267},[696,2387,2174],{"class":775},[696,2389,2203],{"class":844},[696,2391,884],{"class":775},[696,2393,848],{"class":775},[696,2395,776],{"class":775},[696,2397,874],{"class":844},[696,2399,848],{"class":775},[696,2401,789],{"class":775},[696,2403,2218],{"class":705},[696,2405,884],{"class":775},[696,2407,887],{"class":775},[696,2409,2410],{"class":698,"line":1287},[696,2411,2227],{"class":775},[696,2413,2414,2416],{"class":698,"line":1803},[696,2415,893],{"class":775},[696,2417,916],{"class":779},[696,2419,2420,2422],{"class":698,"line":1985},[696,2421,905],{"class":779},[696,2423,899],{"class":775},[696,2425,2426,2428],{"class":698,"line":2242},[696,2427,913],{"class":775},[696,2429,916],{"class":779},[1991,2431,2434,2437,2438,2039,2440,2442],{"color":2432,"icon":2433},"warning","i-lucide-alert-triangle",[1577,2435,2436],{},"Exclusions take precedence."," If a path matches both ",[622,2439,2038],{},[622,2441,2042],{},", it will be excluded.",[674,2444,2446],{"id":2445},"drain-enrichers","Drain & Enrichers",[618,2448,2449],{},"Use Nitro plugin hooks to send logs to external services and enrich them with additional context.",[678,2451,2453],{"id":2452},"drain-plugin","Drain Plugin",[686,2455,2458],{"className":761,"code":2456,"filename":2457,"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,2459,2460,2482,2502,2522,2526,2552,2581,2600,2606,2626,2630,2652,2683],{"__ignoreMap":692},[696,2461,2462,2464,2467,2469,2472,2474,2476,2478,2480],{"class":698,"line":699},[696,2463,772],{"class":771},[696,2465,2466],{"class":771}," type",[696,2468,776],{"class":775},[696,2470,2471],{"class":779}," DrainContext",[696,2473,783],{"class":775},[696,2475,786],{"class":771},[696,2477,789],{"class":775},[696,2479,1866],{"class":705},[696,2481,795],{"class":775},[696,2483,2484,2486,2488,2491,2493,2495,2497,2500],{"class":698,"line":798},[696,2485,772],{"class":771},[696,2487,776],{"class":775},[696,2489,2490],{"class":779}," createAxiomDrain",[696,2492,783],{"class":775},[696,2494,786],{"class":771},[696,2496,789],{"class":775},[696,2498,2499],{"class":705},"evlog\u002Faxiom",[696,2501,795],{"class":775},[696,2503,2504,2506,2508,2511,2513,2515,2517,2520],{"class":698,"line":816},[696,2505,772],{"class":771},[696,2507,776],{"class":775},[696,2509,2510],{"class":779}," createDrainPipeline",[696,2512,783],{"class":775},[696,2514,786],{"class":771},[696,2516,789],{"class":775},[696,2518,2519],{"class":705},"evlog\u002Fpipeline",[696,2521,795],{"class":775},[696,2523,2524],{"class":698,"line":823},[696,2525,820],{"emptyLinePlaceholder":819},[696,2527,2528,2531,2534,2537,2539,2542,2545,2548,2550],{"class":698,"line":841},[696,2529,2530],{"class":1102},"const",[696,2532,2533],{"class":779}," pipeline ",[696,2535,2536],{"class":775},"=",[696,2538,2510],{"class":832},[696,2540,2541],{"class":775},"\u003C",[696,2543,2544],{"class":702},"DrainContext",[696,2546,2547],{"class":775},">",[696,2549,835],{"class":779},[696,2551,838],{"class":775},[696,2553,2554,2557,2559,2561,2564,2566,2569,2571,2574,2576,2579],{"class":698,"line":854},[696,2555,2556],{"class":844},"  batch",[696,2558,848],{"class":775},[696,2560,776],{"class":775},[696,2562,2563],{"class":844}," size",[696,2565,848],{"class":775},[696,2567,2568],{"class":1554}," 50",[696,2570,1242],{"class":775},[696,2572,2573],{"class":844}," intervalMs",[696,2575,848],{"class":775},[696,2577,2578],{"class":1554}," 5000",[696,2580,887],{"class":775},[696,2582,2583,2586,2588,2590,2593,2595,2598],{"class":698,"line":864},[696,2584,2585],{"class":844},"  retry",[696,2587,848],{"class":775},[696,2589,776],{"class":775},[696,2591,2592],{"class":844}," maxAttempts",[696,2594,848],{"class":775},[696,2596,2597],{"class":1554}," 3",[696,2599,887],{"class":775},[696,2601,2602,2604],{"class":698,"line":890},[696,2603,913],{"class":775},[696,2605,916],{"class":779},[696,2607,2608,2610,2613,2615,2618,2620,2623],{"class":698,"line":902},[696,2609,2530],{"class":1102},[696,2611,2612],{"class":779}," drain ",[696,2614,2536],{"class":775},[696,2616,2617],{"class":832}," pipeline",[696,2619,835],{"class":779},[696,2621,2622],{"class":832},"createAxiomDrain",[696,2624,2625],{"class":779},"())\n",[696,2627,2628],{"class":698,"line":910},[696,2629,820],{"emptyLinePlaceholder":819},[696,2631,2632,2634,2636,2639,2641,2643,2646,2648,2650],{"class":698,"line":1267},[696,2633,826],{"class":771},[696,2635,829],{"class":771},[696,2637,2638],{"class":832}," defineNitroPlugin",[696,2640,835],{"class":779},[696,2642,835],{"class":775},[696,2644,2645],{"class":1109},"nitroApp",[696,2647,896],{"class":775},[696,2649,1115],{"class":1102},[696,2651,1118],{"class":775},[696,2653,2654,2657,2659,2662,2664,2667,2669,2671,2674,2676,2678,2681],{"class":698,"line":1287},[696,2655,2656],{"class":779},"  nitroApp",[696,2658,1170],{"class":775},[696,2660,2661],{"class":779},"hooks",[696,2663,1170],{"class":775},[696,2665,2666],{"class":832},"hook",[696,2668,835],{"class":844},[696,2670,884],{"class":775},[696,2672,2673],{"class":705},"evlog:drain",[696,2675,884],{"class":775},[696,2677,1242],{"class":775},[696,2679,2680],{"class":779}," drain",[696,2682,916],{"class":844},[696,2684,2685,2687],{"class":698,"line":1803},[696,2686,913],{"class":775},[696,2688,916],{"class":779},[1991,2690,2691,2692,1997,2695,2697,2698,1170],{"color":1993,"icon":13},"For Nitro v3 standalone, use ",[622,2693,2694],{},"definePlugin",[622,2696,792],{}," instead of ",[622,2699,2700],{},"defineNitroPlugin",[678,2702,2704],{"id":2703},"enricher-plugin","Enricher Plugin",[686,2706,2709],{"className":761,"code":2707,"filename":2708,"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,2710,2711,2736,2740,2764,2768,2788,2822,2852,2858],{"__ignoreMap":692},[696,2712,2713,2715,2717,2720,2722,2725,2727,2729,2731,2734],{"class":698,"line":699},[696,2714,772],{"class":771},[696,2716,776],{"class":775},[696,2718,2719],{"class":779}," createUserAgentEnricher",[696,2721,1242],{"class":775},[696,2723,2724],{"class":779}," createGeoEnricher",[696,2726,783],{"class":775},[696,2728,786],{"class":771},[696,2730,789],{"class":775},[696,2732,2733],{"class":705},"evlog\u002Fenrichers",[696,2735,795],{"class":775},[696,2737,2738],{"class":698,"line":798},[696,2739,820],{"emptyLinePlaceholder":819},[696,2741,2742,2744,2747,2749,2751,2754,2757,2759,2761],{"class":698,"line":816},[696,2743,2530],{"class":1102},[696,2745,2746],{"class":779}," enrichers ",[696,2748,2536],{"class":775},[696,2750,2128],{"class":779},[696,2752,2753],{"class":832},"createUserAgentEnricher",[696,2755,2756],{"class":779},"()",[696,2758,1242],{"class":775},[696,2760,2724],{"class":832},[696,2762,2763],{"class":779},"()]\n",[696,2765,2766],{"class":698,"line":823},[696,2767,820],{"emptyLinePlaceholder":819},[696,2769,2770,2772,2774,2776,2778,2780,2782,2784,2786],{"class":698,"line":841},[696,2771,826],{"class":771},[696,2773,829],{"class":771},[696,2775,2638],{"class":832},[696,2777,835],{"class":779},[696,2779,835],{"class":775},[696,2781,2645],{"class":1109},[696,2783,896],{"class":775},[696,2785,1115],{"class":1102},[696,2787,1118],{"class":775},[696,2789,2790,2792,2794,2796,2798,2800,2802,2804,2807,2809,2811,2813,2816,2818,2820],{"class":698,"line":854},[696,2791,2656],{"class":779},[696,2793,1170],{"class":775},[696,2795,2661],{"class":779},[696,2797,1170],{"class":775},[696,2799,2666],{"class":832},[696,2801,835],{"class":844},[696,2803,884],{"class":775},[696,2805,2806],{"class":705},"evlog:enrich",[696,2808,884],{"class":775},[696,2810,1242],{"class":775},[696,2812,1106],{"class":775},[696,2814,2815],{"class":1109},"ctx",[696,2817,896],{"class":775},[696,2819,1115],{"class":1102},[696,2821,1118],{"class":775},[696,2823,2824,2827,2829,2831,2834,2837,2840,2843,2846,2848,2850],{"class":698,"line":864},[696,2825,2826],{"class":771},"    for",[696,2828,1106],{"class":844},[696,2830,2530],{"class":1102},[696,2832,2833],{"class":779}," enricher",[696,2835,2836],{"class":775}," of",[696,2838,2839],{"class":779}," enrichers",[696,2841,2842],{"class":844},") ",[696,2844,2845],{"class":832},"enricher",[696,2847,835],{"class":844},[696,2849,2815],{"class":779},[696,2851,916],{"class":844},[696,2853,2854,2856],{"class":698,"line":890},[696,2855,1798],{"class":775},[696,2857,916],{"class":844},[696,2859,2860,2862],{"class":698,"line":902},[696,2861,913],{"class":775},[696,2863,916],{"class":779},[1991,2865,2011,2868,2039,2870,2872],{"color":2866,"icon":2867},"neutral","i-lucide-arrow-right",[663,2869,148],{"href":153},[663,2871,440],{"href":441}," docs for the full list of available drains and enrichers.",[674,2874,66],{"id":2027},[678,2876,2878],{"id":2877},"head-sampling","Head Sampling",[618,2880,2881],{},"Randomly keep a percentage of logs per level. Runs before the request completes.",[683,2883,2884,3068],{},[686,2885,2887],{"className":761,"code":2886,"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,2888,2889,2907,2921,2925,2937,2945,2953,2962,3000,3009,3024,3038,3045,3049,3055,3061],{"__ignoreMap":692},[696,2890,2891,2893,2895,2897,2899,2901,2903,2905],{"class":698,"line":699},[696,2892,772],{"class":771},[696,2894,776],{"class":775},[696,2896,780],{"class":779},[696,2898,783],{"class":775},[696,2900,786],{"class":771},[696,2902,789],{"class":775},[696,2904,792],{"class":705},[696,2906,795],{"class":775},[696,2908,2909,2911,2913,2915,2917,2919],{"class":698,"line":798},[696,2910,772],{"class":771},[696,2912,803],{"class":779},[696,2914,806],{"class":771},[696,2916,789],{"class":775},[696,2918,811],{"class":705},[696,2920,795],{"class":775},[696,2922,2923],{"class":698,"line":816},[696,2924,820],{"emptyLinePlaceholder":819},[696,2926,2927,2929,2931,2933,2935],{"class":698,"line":823},[696,2928,826],{"class":771},[696,2930,829],{"class":771},[696,2932,780],{"class":832},[696,2934,835],{"class":779},[696,2936,838],{"class":775},[696,2938,2939,2941,2943],{"class":698,"line":841},[696,2940,845],{"class":844},[696,2942,848],{"class":775},[696,2944,851],{"class":779},[696,2946,2947,2949,2951],{"class":698,"line":854},[696,2948,857],{"class":832},[696,2950,835],{"class":779},[696,2952,838],{"class":775},[696,2954,2955,2958,2960],{"class":698,"line":864},[696,2956,2957],{"class":844},"      sampling",[696,2959,848],{"class":775},[696,2961,1118],{"class":775},[696,2963,2964,2967,2969,2971,2974,2976,2979,2981,2984,2986,2988,2990,2993,2995,2998],{"class":698,"line":890},[696,2965,2966],{"class":844},"        rates",[696,2968,848],{"class":775},[696,2970,776],{"class":775},[696,2972,2973],{"class":844}," info",[696,2975,848],{"class":775},[696,2977,2978],{"class":1554}," 10",[696,2980,1242],{"class":775},[696,2982,2983],{"class":844}," warn",[696,2985,848],{"class":775},[696,2987,2568],{"class":1554},[696,2989,1242],{"class":775},[696,2991,2992],{"class":844}," debug",[696,2994,848],{"class":775},[696,2996,2997],{"class":1554}," 5",[696,2999,887],{"class":775},[696,3001,3002,3005,3007],{"class":698,"line":902},[696,3003,3004],{"class":844},"        keep",[696,3006,848],{"class":775},[696,3008,851],{"class":779},[696,3010,3011,3014,3017,3019,3022],{"class":698,"line":910},[696,3012,3013],{"class":775},"          {",[696,3015,3016],{"class":844}," duration",[696,3018,848],{"class":775},[696,3020,3021],{"class":1554}," 1000",[696,3023,887],{"class":775},[696,3025,3026,3028,3031,3033,3036],{"class":698,"line":1267},[696,3027,3013],{"class":775},[696,3029,3030],{"class":844}," status",[696,3032,848],{"class":775},[696,3034,3035],{"class":1554}," 400",[696,3037,887],{"class":775},[696,3039,3040,3043],{"class":698,"line":1287},[696,3041,3042],{"class":779},"        ]",[696,3044,899],{"class":775},[696,3046,3047],{"class":698,"line":1803},[696,3048,2227],{"class":775},[696,3050,3051,3053],{"class":698,"line":1985},[696,3052,893],{"class":775},[696,3054,916],{"class":779},[696,3056,3057,3059],{"class":698,"line":2242},[696,3058,905],{"class":779},[696,3060,899],{"class":775},[696,3062,3064,3066],{"class":698,"line":3063},16,[696,3065,913],{"class":775},[696,3067,916],{"class":779},[686,3069,3071],{"className":761,"code":3070,"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,3072,3073,3091,3105,3109,3121,3129,3137,3145,3177,3185,3197,3209,3215,3219,3225,3231],{"__ignoreMap":692},[696,3074,3075,3077,3079,3081,3083,3085,3087,3089],{"class":698,"line":699},[696,3076,772],{"class":771},[696,3078,776],{"class":775},[696,3080,931],{"class":779},[696,3082,783],{"class":775},[696,3084,786],{"class":771},[696,3086,789],{"class":775},[696,3088,940],{"class":705},[696,3090,795],{"class":775},[696,3092,3093,3095,3097,3099,3101,3103],{"class":698,"line":798},[696,3094,772],{"class":771},[696,3096,803],{"class":779},[696,3098,806],{"class":771},[696,3100,789],{"class":775},[696,3102,955],{"class":705},[696,3104,795],{"class":775},[696,3106,3107],{"class":698,"line":816},[696,3108,820],{"emptyLinePlaceholder":819},[696,3110,3111,3113,3115,3117,3119],{"class":698,"line":823},[696,3112,826],{"class":771},[696,3114,829],{"class":771},[696,3116,931],{"class":832},[696,3118,835],{"class":779},[696,3120,838],{"class":775},[696,3122,3123,3125,3127],{"class":698,"line":841},[696,3124,845],{"class":844},[696,3126,848],{"class":775},[696,3128,851],{"class":779},[696,3130,3131,3133,3135],{"class":698,"line":854},[696,3132,857],{"class":832},[696,3134,835],{"class":779},[696,3136,838],{"class":775},[696,3138,3139,3141,3143],{"class":698,"line":864},[696,3140,2957],{"class":844},[696,3142,848],{"class":775},[696,3144,1118],{"class":775},[696,3146,3147,3149,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175],{"class":698,"line":890},[696,3148,2966],{"class":844},[696,3150,848],{"class":775},[696,3152,776],{"class":775},[696,3154,2973],{"class":844},[696,3156,848],{"class":775},[696,3158,2978],{"class":1554},[696,3160,1242],{"class":775},[696,3162,2983],{"class":844},[696,3164,848],{"class":775},[696,3166,2568],{"class":1554},[696,3168,1242],{"class":775},[696,3170,2992],{"class":844},[696,3172,848],{"class":775},[696,3174,2997],{"class":1554},[696,3176,887],{"class":775},[696,3178,3179,3181,3183],{"class":698,"line":902},[696,3180,3004],{"class":844},[696,3182,848],{"class":775},[696,3184,851],{"class":779},[696,3186,3187,3189,3191,3193,3195],{"class":698,"line":910},[696,3188,3013],{"class":775},[696,3190,3016],{"class":844},[696,3192,848],{"class":775},[696,3194,3021],{"class":1554},[696,3196,887],{"class":775},[696,3198,3199,3201,3203,3205,3207],{"class":698,"line":1267},[696,3200,3013],{"class":775},[696,3202,3030],{"class":844},[696,3204,848],{"class":775},[696,3206,3035],{"class":1554},[696,3208,887],{"class":775},[696,3210,3211,3213],{"class":698,"line":1287},[696,3212,3042],{"class":779},[696,3214,899],{"class":775},[696,3216,3217],{"class":698,"line":1803},[696,3218,2227],{"class":775},[696,3220,3221,3223],{"class":698,"line":1985},[696,3222,893],{"class":775},[696,3224,916],{"class":779},[696,3226,3227,3229],{"class":698,"line":2242},[696,3228,905],{"class":779},[696,3230,899],{"class":775},[696,3232,3233,3235],{"class":698,"line":3063},[696,3234,913],{"class":775},[696,3236,916],{"class":779},[618,3238,3239],{},"Each level is a percentage from 0 to 100. Levels you don't configure default to 100% (keep everything).",[678,3241,3243],{"id":3242},"custom-tail-sampling","Custom Tail Sampling",[618,3245,3246,3247,3250],{},"For conditions beyond status, duration, and path, use the ",[622,3248,3249],{},"evlog:emit:keep"," hook:",[686,3252,3255],{"className":761,"code":3253,"filename":3254,"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,3256,3257,3277,3309,3353,3382,3388],{"__ignoreMap":692},[696,3258,3259,3261,3263,3265,3267,3269,3271,3273,3275],{"class":698,"line":699},[696,3260,826],{"class":771},[696,3262,829],{"class":771},[696,3264,2638],{"class":832},[696,3266,835],{"class":779},[696,3268,835],{"class":775},[696,3270,2645],{"class":1109},[696,3272,896],{"class":775},[696,3274,1115],{"class":1102},[696,3276,1118],{"class":775},[696,3278,3279,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3301,3303,3305,3307],{"class":698,"line":798},[696,3280,2656],{"class":779},[696,3282,1170],{"class":775},[696,3284,2661],{"class":779},[696,3286,1170],{"class":775},[696,3288,2666],{"class":832},[696,3290,835],{"class":844},[696,3292,884],{"class":775},[696,3294,3249],{"class":705},[696,3296,884],{"class":775},[696,3298,1242],{"class":775},[696,3300,1106],{"class":775},[696,3302,2815],{"class":1109},[696,3304,896],{"class":775},[696,3306,1115],{"class":1102},[696,3308,1118],{"class":775},[696,3310,3311,3314,3316,3318,3321,3323,3326,3328,3331,3334,3336,3339,3342,3345,3347,3350],{"class":698,"line":816},[696,3312,3313],{"class":1102},"    const",[696,3315,1181],{"class":779},[696,3317,1129],{"class":775},[696,3319,3320],{"class":779}," ctx",[696,3322,1170],{"class":775},[696,3324,3325],{"class":779},"context",[696,3327,1170],{"class":775},[696,3329,3330],{"class":779},"user",[696,3332,3333],{"class":771}," as",[696,3335,776],{"class":775},[696,3337,3338],{"class":844}," premium",[696,3340,3341],{"class":775},"?:",[696,3343,3344],{"class":702}," boolean",[696,3346,783],{"class":775},[696,3348,3349],{"class":775}," |",[696,3351,3352],{"class":702}," undefined\n",[696,3354,3355,3358,3360,3362,3365,3368,3370,3372,3374,3377,3379],{"class":698,"line":823},[696,3356,3357],{"class":771},"    if",[696,3359,1106],{"class":844},[696,3361,3330],{"class":779},[696,3363,3364],{"class":775},"?.",[696,3366,3367],{"class":779},"premium",[696,3369,2842],{"class":844},[696,3371,2815],{"class":779},[696,3373,1170],{"class":775},[696,3375,3376],{"class":779},"shouldKeep",[696,3378,1129],{"class":775},[696,3380,3381],{"class":1280}," true\n",[696,3383,3384,3386],{"class":698,"line":841},[696,3385,1798],{"class":775},[696,3387,916],{"class":844},[696,3389,3390,3392],{"class":698,"line":854},[696,3391,913],{"class":775},[696,3393,916],{"class":779},[1991,3395,3396,3397,3400],{"color":1993,"icon":13},"Errors are always kept by default. You have to explicitly set ",[622,3398,3399],{},"error: 0"," to drop them.",[674,3402,3404],{"id":3403},"next-steps","Next Steps",[618,3406,3407,3408,3410],{},"Deepen your ",[1577,3409,255],{}," integration:",[635,3412,3413,3418,3423,3428],{},[638,3414,3415,3417],{},[663,3416,51],{"href":52},": Design comprehensive events with context layering",[638,3419,3420,3422],{},[663,3421,148],{"href":153},": Send logs to Axiom, Sentry, PostHog, and more",[638,3424,3425,3427],{},[663,3426,66],{"href":67},": Control log volume with head and tail sampling",[638,3429,3430,3432,3433,1619,3435,1623,3437,3439],{},[663,3431,56],{"href":57},": Throw errors with ",[622,3434,1618],{},[622,3436,1622],{},[622,3438,1626],{}," fields",[3441,3442,3443],"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":3445},[3446,3450,3451,3452,3455,3459,3463],{"id":676,"depth":798,"text":25,"children":3447},[3448,3449],{"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":3453},[3454],{"id":2031,"depth":816,"text":2032},{"id":2445,"depth":798,"text":2446,"children":3456},[3457,3458],{"id":2452,"depth":816,"text":2453},{"id":2703,"depth":816,"text":2704},{"id":2027,"depth":798,"text":66,"children":3460},[3461,3462],{"id":2877,"depth":816,"text":2878},{"id":3242,"depth":816,"text":3243},{"id":3403,"depth":798,"text":3404},"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":255,"icon":258},{"title":255,"description":3464},"v-_F3t7vbBBqx38div2VwJCjtRZJKG6Ymp3sr4vCszk",[3472,3474],{"title":250,"path":251,"stem":252,"description":3473,"icon":253,"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":260,"path":261,"stem":262,"description":3475,"icon":263,"children":-1},"Automatic wide events, structured errors, and logging in TanStack Start API routes and server functions.",1789294030702]