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