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