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