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