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