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