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