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