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