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