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