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