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