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