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