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