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