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