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