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