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