[{"data":1,"prerenderedAt":2140},["ShallowReactive",2],{"navigation_docs":3,"-logging-client-logging":282,"-logging-client-logging-surround":2135},[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":56,"body":284,"description":2125,"extension":2126,"links":2127,"meta":2131,"navigation":2132,"path":57,"seo":2133,"stem":58,"__hash__":2134},"docs\u002F2.logging\u002F4.client-logging.md",{"type":285,"value":286,"toc":2110},"minimark",[287,291,295,298,797,803,807,812,817,823,884,942,946,949,983,999,1003,1020,1024,1030,1165,1168,1171,1177,1271,1354,1367,1371,1374,1378,1392,1604,1613,1617,1620,2047,2050,2077,2085,2089,2106],[288,289,290],"p",{},"Server logs tell you what happened on the backend. Client logs complete the picture: user interactions, page views, frontend errors, and performance signals that never reach the server unless you capture them.",[292,293,20],"h2",{"id":294},"quick-start",[288,296,297],{},"evlog provides a client-side logging API that works in any browser environment:",[299,300,301,480,698],"code-group",{},[302,303,309],"pre",{"className":304,"code":305,"filename":306,"language":307,"meta":308,"style":308},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { initLog, log } from 'evlog\u002Fclient'\n\nexport default defineNuxtPlugin(() => {\n  initLog({ service: 'web' })\n\n  log.info({ action: 'app_init', path: window.location.pathname })\n})\n","app\u002Fplugins\u002Flogger.client.ts (Nuxt)","typescript","",[310,311,312,351,358,384,415,420,472],"code",{"__ignoreMap":308},[313,314,317,321,325,329,332,335,338,341,344,348],"span",{"class":315,"line":316},"line",1,[313,318,320],{"class":319},"s7zQu","import",[313,322,324],{"class":323},"sMK4o"," {",[313,326,328],{"class":327},"sTEyZ"," initLog",[313,330,331],{"class":323},",",[313,333,334],{"class":327}," log",[313,336,337],{"class":323}," }",[313,339,340],{"class":319}," from",[313,342,343],{"class":323}," '",[313,345,347],{"class":346},"sfazB","evlog\u002Fclient",[313,349,350],{"class":323},"'\n",[313,352,354],{"class":315,"line":353},2,[313,355,357],{"emptyLinePlaceholder":356},true,"\n",[313,359,361,364,367,371,374,377,381],{"class":315,"line":360},3,[313,362,363],{"class":319},"export",[313,365,366],{"class":319}," default",[313,368,370],{"class":369},"s2Zo4"," defineNuxtPlugin",[313,372,373],{"class":327},"(",[313,375,376],{"class":323},"()",[313,378,380],{"class":379},"spNyl"," =>",[313,382,383],{"class":323}," {\n",[313,385,387,390,393,396,399,402,404,407,410,412],{"class":315,"line":386},4,[313,388,389],{"class":369},"  initLog",[313,391,373],{"class":392},"swJcz",[313,394,395],{"class":323},"{",[313,397,398],{"class":392}," service",[313,400,401],{"class":323},":",[313,403,343],{"class":323},[313,405,406],{"class":346},"web",[313,408,409],{"class":323},"'",[313,411,337],{"class":323},[313,413,414],{"class":392},")\n",[313,416,418],{"class":315,"line":417},5,[313,419,357],{"emptyLinePlaceholder":356},[313,421,423,426,429,432,434,436,439,441,443,446,448,450,453,455,458,460,463,465,468,470],{"class":315,"line":422},6,[313,424,425],{"class":327},"  log",[313,427,428],{"class":323},".",[313,430,431],{"class":369},"info",[313,433,373],{"class":392},[313,435,395],{"class":323},[313,437,438],{"class":392}," action",[313,440,401],{"class":323},[313,442,343],{"class":323},[313,444,445],{"class":346},"app_init",[313,447,409],{"class":323},[313,449,331],{"class":323},[313,451,452],{"class":392}," path",[313,454,401],{"class":323},[313,456,457],{"class":327}," window",[313,459,428],{"class":323},[313,461,462],{"class":327},"location",[313,464,428],{"class":323},[313,466,467],{"class":327},"pathname",[313,469,337],{"class":323},[313,471,414],{"class":392},[313,473,475,478],{"class":315,"line":474},7,[313,476,477],{"class":323},"}",[313,479,414],{"class":327},[302,481,484],{"className":304,"code":482,"filename":483,"language":307,"meta":308,"style":308},"'use client'\nimport { useEffect } from 'react'\nimport { initLog, log } from 'evlog\u002Fclient'\n\nexport function LogProvider({ children }: { children: React.ReactNode }) {\n  useEffect(() => {\n    initLog({ service: 'web' })\n    log.info({ action: 'app_init', path: window.location.pathname })\n  }, [])\n\n  return \u003C>{children}\u003C\u002F>\n}\n","app\u002Fproviders.tsx (React \u002F Next.js)",[310,485,486,495,515,537,541,581,594,617,661,670,675,692],{"__ignoreMap":308},[313,487,488,490,493],{"class":315,"line":316},[313,489,409],{"class":323},[313,491,492],{"class":346},"use client",[313,494,350],{"class":323},[313,496,497,499,501,504,506,508,510,513],{"class":315,"line":353},[313,498,320],{"class":319},[313,500,324],{"class":323},[313,502,503],{"class":327}," useEffect",[313,505,337],{"class":323},[313,507,340],{"class":319},[313,509,343],{"class":323},[313,511,512],{"class":346},"react",[313,514,350],{"class":323},[313,516,517,519,521,523,525,527,529,531,533,535],{"class":315,"line":360},[313,518,320],{"class":319},[313,520,324],{"class":323},[313,522,328],{"class":327},[313,524,331],{"class":323},[313,526,334],{"class":327},[313,528,337],{"class":323},[313,530,340],{"class":319},[313,532,343],{"class":323},[313,534,347],{"class":346},[313,536,350],{"class":323},[313,538,539],{"class":315,"line":386},[313,540,357],{"emptyLinePlaceholder":356},[313,542,543,545,548,551,554,558,561,563,565,567,571,573,576,579],{"class":315,"line":417},[313,544,363],{"class":319},[313,546,547],{"class":379}," function",[313,549,550],{"class":369}," LogProvider",[313,552,553],{"class":323},"({",[313,555,557],{"class":556},"sHdIc"," children",[313,559,560],{"class":323}," }:",[313,562,324],{"class":323},[313,564,557],{"class":392},[313,566,401],{"class":323},[313,568,570],{"class":569},"sBMFI"," React",[313,572,428],{"class":323},[313,574,575],{"class":569},"ReactNode",[313,577,578],{"class":323}," })",[313,580,383],{"class":323},[313,582,583,586,588,590,592],{"class":315,"line":422},[313,584,585],{"class":369},"  useEffect",[313,587,373],{"class":392},[313,589,376],{"class":323},[313,591,380],{"class":379},[313,593,383],{"class":323},[313,595,596,599,601,603,605,607,609,611,613,615],{"class":315,"line":474},[313,597,598],{"class":369},"    initLog",[313,600,373],{"class":392},[313,602,395],{"class":323},[313,604,398],{"class":392},[313,606,401],{"class":323},[313,608,343],{"class":323},[313,610,406],{"class":346},[313,612,409],{"class":323},[313,614,337],{"class":323},[313,616,414],{"class":392},[313,618,620,623,625,627,629,631,633,635,637,639,641,643,645,647,649,651,653,655,657,659],{"class":315,"line":619},8,[313,621,622],{"class":327},"    log",[313,624,428],{"class":323},[313,626,431],{"class":369},[313,628,373],{"class":392},[313,630,395],{"class":323},[313,632,438],{"class":392},[313,634,401],{"class":323},[313,636,343],{"class":323},[313,638,445],{"class":346},[313,640,409],{"class":323},[313,642,331],{"class":323},[313,644,452],{"class":392},[313,646,401],{"class":323},[313,648,457],{"class":327},[313,650,428],{"class":323},[313,652,462],{"class":327},[313,654,428],{"class":323},[313,656,467],{"class":327},[313,658,337],{"class":323},[313,660,414],{"class":392},[313,662,664,667],{"class":315,"line":663},9,[313,665,666],{"class":323},"  },",[313,668,669],{"class":392}," [])\n",[313,671,673],{"class":315,"line":672},10,[313,674,357],{"emptyLinePlaceholder":356},[313,676,678,681,684,686,689],{"class":315,"line":677},11,[313,679,680],{"class":319},"  return",[313,682,683],{"class":392}," \u003C>",[313,685,395],{"class":323},[313,687,688],{"class":327},"children",[313,690,691],{"class":323},"}\u003C\u002F>\n",[313,693,695],{"class":315,"line":694},12,[313,696,697],{"class":323},"}\n",[302,699,702],{"className":304,"code":700,"filename":701,"language":307,"meta":308,"style":308},"import { initLog, log } from 'evlog\u002Fclient'\n\ninitLog({ service: 'web' })\nlog.info({ action: 'app_init', path: window.location.pathname })\n","src\u002Fapp.ts (Any frontend)",[310,703,704,726,730,753],{"__ignoreMap":308},[313,705,706,708,710,712,714,716,718,720,722,724],{"class":315,"line":316},[313,707,320],{"class":319},[313,709,324],{"class":323},[313,711,328],{"class":327},[313,713,331],{"class":323},[313,715,334],{"class":327},[313,717,337],{"class":323},[313,719,340],{"class":319},[313,721,343],{"class":323},[313,723,347],{"class":346},[313,725,350],{"class":323},[313,727,728],{"class":315,"line":353},[313,729,357],{"emptyLinePlaceholder":356},[313,731,732,735,737,739,741,743,745,747,749,751],{"class":315,"line":360},[313,733,734],{"class":369},"initLog",[313,736,373],{"class":327},[313,738,395],{"class":323},[313,740,398],{"class":392},[313,742,401],{"class":323},[313,744,343],{"class":323},[313,746,406],{"class":346},[313,748,409],{"class":323},[313,750,337],{"class":323},[313,752,414],{"class":327},[313,754,755,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,793,795],{"class":315,"line":386},[313,756,757],{"class":327},"log",[313,759,428],{"class":323},[313,761,431],{"class":369},[313,763,373],{"class":327},[313,765,395],{"class":323},[313,767,438],{"class":392},[313,769,401],{"class":323},[313,771,343],{"class":323},[313,773,445],{"class":346},[313,775,409],{"class":323},[313,777,331],{"class":323},[313,779,452],{"class":392},[313,781,401],{"class":323},[313,783,457],{"class":327},[313,785,428],{"class":323},[313,787,462],{"class":327},[313,789,428],{"class":323},[313,791,792],{"class":327},"pathname ",[313,794,477],{"class":323},[313,796,414],{"class":327},[288,798,799,800,802],{},"The ",[310,801,757],{}," object works anywhere in your client code: components, composables, event handlers.",[292,804,806],{"id":805},"two-call-signatures","Two Call Signatures",[288,808,799,809,811],{},[310,810,757],{}," API accepts two forms depending on the context.",[813,814,816],"h3",{"id":815},"object-form-structured-context","Object Form (structured context)",[288,818,819,820,401],{},"Pass an object to capture structured data, just like server-side ",[310,821,822],{},"log.set()",[302,824,827],{"className":304,"code":825,"filename":826,"language":307,"meta":308,"style":308},"log.info({ action: 'page_view', path: '\u002Fproducts', referrer: document.referrer })\n","pages\u002Fproducts.vue",[310,828,829],{"__ignoreMap":308},[313,830,831,833,835,837,839,841,843,845,847,850,852,854,856,858,860,863,865,867,870,872,875,877,880,882],{"class":315,"line":316},[313,832,757],{"class":327},[313,834,428],{"class":323},[313,836,431],{"class":369},[313,838,373],{"class":327},[313,840,395],{"class":323},[313,842,438],{"class":392},[313,844,401],{"class":323},[313,846,343],{"class":323},[313,848,849],{"class":346},"page_view",[313,851,409],{"class":323},[313,853,331],{"class":323},[313,855,452],{"class":392},[313,857,401],{"class":323},[313,859,343],{"class":323},[313,861,862],{"class":346},"\u002Fproducts",[313,864,409],{"class":323},[313,866,331],{"class":323},[313,868,869],{"class":392}," referrer",[313,871,401],{"class":323},[313,873,874],{"class":327}," document",[313,876,428],{"class":323},[313,878,879],{"class":327},"referrer ",[313,881,477],{"class":323},[313,883,414],{"class":327},[302,885,890],{"className":886,"code":887,"filename":888,"language":889,"meta":308,"style":308},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[web] info  { action: 'page_view', path: '\u002Fproducts', referrer: 'https:\u002F\u002Fgoogle.com' }\n","Browser console","bash",[310,891,892],{"__ignoreMap":308},[313,893,894,897,899,902,905,907,910,912,914,916,918,921,923,925,927,929,932,934,937,939],{"class":315,"line":316},[313,895,896],{"class":323},"[",[313,898,406],{"class":327},[313,900,901],{"class":323},"]",[313,903,904],{"class":327}," info  ",[313,906,395],{"class":323},[313,908,909],{"class":569}," action:",[313,911,343],{"class":323},[313,913,849],{"class":346},[313,915,409],{"class":323},[313,917,331],{"class":346},[313,919,920],{"class":346}," path:",[313,922,343],{"class":323},[313,924,862],{"class":346},[313,926,409],{"class":323},[313,928,331],{"class":346},[313,930,931],{"class":346}," referrer:",[313,933,343],{"class":323},[313,935,936],{"class":346},"https:\u002F\u002Fgoogle.com",[313,938,409],{"class":323},[313,940,941],{"class":346}," }\n",[813,943,945],{"id":944},"tag-message-form-quick-logs","Tag + Message Form (quick logs)",[288,947,948],{},"Pass a tag and a message for quick, readable logs:",[302,950,953],{"className":304,"code":951,"filename":952,"language":307,"meta":308,"style":308},"log.info('auth', 'User logged in')\n","composables\u002FuseAuth.ts",[310,954,955],{"__ignoreMap":308},[313,956,957,959,961,963,965,967,970,972,974,976,979,981],{"class":315,"line":316},[313,958,757],{"class":327},[313,960,428],{"class":323},[313,962,431],{"class":369},[313,964,373],{"class":327},[313,966,409],{"class":323},[313,968,969],{"class":346},"auth",[313,971,409],{"class":323},[313,973,331],{"class":323},[313,975,343],{"class":323},[313,977,978],{"class":346},"User logged in",[313,980,409],{"class":323},[313,982,414],{"class":327},[302,984,986],{"className":886,"code":985,"filename":888,"language":889,"meta":308,"style":308},"[auth] User logged in\n",[310,987,988],{"__ignoreMap":308},[313,989,990,992,994,996],{"class":315,"line":316},[313,991,896],{"class":323},[313,993,969],{"class":327},[313,995,901],{"class":323},[313,997,998],{"class":327}," User logged in\n",[813,1000,1002],{"id":1001},"available-levels","Available Levels",[288,1004,1005,1006,1009,1010,1009,1013,1016,1017,428],{},"Both forms support four levels: ",[310,1007,1008],{},"log.info()",", ",[310,1011,1012],{},"log.warn()",[310,1014,1015],{},"log.error()",", and ",[310,1018,1019],{},"log.debug()",[292,1021,1023],{"id":1022},"identity-context","Identity Context",[288,1025,1026,1027,401],{},"Track which user generated a log with ",[310,1028,1029],{},"setIdentity()",[302,1031,1033],{"className":304,"code":1032,"filename":952,"language":307,"meta":308,"style":308},"import { setIdentity, clearIdentity, log } from 'evlog\u002Fclient'\n\n\u002F\u002F After login\nsetIdentity({ userId: 'usr_123', plan: 'pro' })\n\nlog.info({ action: 'dashboard_view' })\n\u002F\u002F → { userId: 'usr_123', plan: 'pro', action: 'dashboard_view', ... }\n\n\u002F\u002F After logout\nclearIdentity()\n",[310,1034,1035,1063,1067,1073,1112,1116,1143,1148,1152,1157],{"__ignoreMap":308},[313,1036,1037,1039,1041,1044,1046,1049,1051,1053,1055,1057,1059,1061],{"class":315,"line":316},[313,1038,320],{"class":319},[313,1040,324],{"class":323},[313,1042,1043],{"class":327}," setIdentity",[313,1045,331],{"class":323},[313,1047,1048],{"class":327}," clearIdentity",[313,1050,331],{"class":323},[313,1052,334],{"class":327},[313,1054,337],{"class":323},[313,1056,340],{"class":319},[313,1058,343],{"class":323},[313,1060,347],{"class":346},[313,1062,350],{"class":323},[313,1064,1065],{"class":315,"line":353},[313,1066,357],{"emptyLinePlaceholder":356},[313,1068,1069],{"class":315,"line":360},[313,1070,1072],{"class":1071},"sHwdD","\u002F\u002F After login\n",[313,1074,1075,1078,1080,1082,1085,1087,1089,1092,1094,1096,1099,1101,1103,1106,1108,1110],{"class":315,"line":386},[313,1076,1077],{"class":369},"setIdentity",[313,1079,373],{"class":327},[313,1081,395],{"class":323},[313,1083,1084],{"class":392}," userId",[313,1086,401],{"class":323},[313,1088,343],{"class":323},[313,1090,1091],{"class":346},"usr_123",[313,1093,409],{"class":323},[313,1095,331],{"class":323},[313,1097,1098],{"class":392}," plan",[313,1100,401],{"class":323},[313,1102,343],{"class":323},[313,1104,1105],{"class":346},"pro",[313,1107,409],{"class":323},[313,1109,337],{"class":323},[313,1111,414],{"class":327},[313,1113,1114],{"class":315,"line":417},[313,1115,357],{"emptyLinePlaceholder":356},[313,1117,1118,1120,1122,1124,1126,1128,1130,1132,1134,1137,1139,1141],{"class":315,"line":422},[313,1119,757],{"class":327},[313,1121,428],{"class":323},[313,1123,431],{"class":369},[313,1125,373],{"class":327},[313,1127,395],{"class":323},[313,1129,438],{"class":392},[313,1131,401],{"class":323},[313,1133,343],{"class":323},[313,1135,1136],{"class":346},"dashboard_view",[313,1138,409],{"class":323},[313,1140,337],{"class":323},[313,1142,414],{"class":327},[313,1144,1145],{"class":315,"line":474},[313,1146,1147],{"class":1071},"\u002F\u002F → { userId: 'usr_123', plan: 'pro', action: 'dashboard_view', ... }\n",[313,1149,1150],{"class":315,"line":619},[313,1151,357],{"emptyLinePlaceholder":356},[313,1153,1154],{"class":315,"line":663},[313,1155,1156],{"class":1071},"\u002F\u002F After logout\n",[313,1158,1159,1162],{"class":315,"line":672},[313,1160,1161],{"class":369},"clearIdentity",[313,1163,1164],{"class":327},"()\n",[288,1166,1167],{},"Identity fields are automatically merged into every log event until cleared. This lets you correlate browser events to specific users in your observability tools.",[292,1169,76],{"id":1170},"configuration",[288,1172,1173,1176],{},[310,1174,1175],{},"initLog()"," accepts the following options:",[1178,1179,1180,1196],"table",{},[1181,1182,1183],"thead",{},[1184,1185,1186,1190,1193],"tr",{},[1187,1188,1189],"th",{},"Option",[1187,1191,1192],{},"Default",[1187,1194,1195],{},"Description",[1197,1198,1199,1215,1229,1243,1258],"tbody",{},[1184,1200,1201,1207,1212],{},[1202,1203,1204],"td",{},[310,1205,1206],{},"enabled",[1202,1208,1209],{},[310,1210,1211],{},"true",[1202,1213,1214],{},"Enable or disable all client logging",[1184,1216,1217,1222,1226],{},[1202,1218,1219],{},[310,1220,1221],{},"console",[1202,1223,1224],{},[310,1225,1211],{},[1202,1227,1228],{},"Output logs to the browser console",[1184,1230,1231,1236,1240],{},[1202,1232,1233],{},[310,1234,1235],{},"pretty",[1202,1237,1238],{},[310,1239,1211],{},[1202,1241,1242],{},"Use colored, formatted console output",[1184,1244,1245,1250,1255],{},[1202,1246,1247],{},[310,1248,1249],{},"service",[1202,1251,1252],{},[310,1253,1254],{},"'client'",[1202,1256,1257],{},"Service name included in every log event",[1184,1259,1260,1265,1268],{},[1202,1261,1262],{},[310,1263,1264],{},"transport",[1202,1266,1267],{},"-",[1202,1269,1270],{},"Send logs to a server endpoint (see below)",[302,1272,1275],{"className":304,"code":1273,"filename":1274,"language":307,"meta":308,"style":308},"initLog({\n  service: 'web',\n  transport: {\n    enabled: true,\n    endpoint: '\u002Fapi\u002F_evlog\u002Fingest', \u002F\u002F default endpoint\n  },\n})\n","app\u002Fplugins\u002Flogger.client.ts",[310,1276,1277,1286,1302,1311,1324,1343,1348],{"__ignoreMap":308},[313,1278,1279,1281,1283],{"class":315,"line":316},[313,1280,734],{"class":369},[313,1282,373],{"class":327},[313,1284,1285],{"class":323},"{\n",[313,1287,1288,1291,1293,1295,1297,1299],{"class":315,"line":353},[313,1289,1290],{"class":392},"  service",[313,1292,401],{"class":323},[313,1294,343],{"class":323},[313,1296,406],{"class":346},[313,1298,409],{"class":323},[313,1300,1301],{"class":323},",\n",[313,1303,1304,1307,1309],{"class":315,"line":360},[313,1305,1306],{"class":392},"  transport",[313,1308,401],{"class":323},[313,1310,383],{"class":323},[313,1312,1313,1316,1318,1322],{"class":315,"line":386},[313,1314,1315],{"class":392},"    enabled",[313,1317,401],{"class":323},[313,1319,1321],{"class":1320},"sfNiH"," true",[313,1323,1301],{"class":323},[313,1325,1326,1329,1331,1333,1336,1338,1340],{"class":315,"line":417},[313,1327,1328],{"class":392},"    endpoint",[313,1330,401],{"class":323},[313,1332,343],{"class":323},[313,1334,1335],{"class":346},"\u002Fapi\u002F_evlog\u002Fingest",[313,1337,409],{"class":323},[313,1339,331],{"class":323},[313,1341,1342],{"class":1071}," \u002F\u002F default endpoint\n",[313,1344,1345],{"class":315,"line":422},[313,1346,1347],{"class":323},"  },\n",[313,1349,1350,1352],{"class":315,"line":474},[313,1351,477],{"class":323},[313,1353,414],{"class":327},[1355,1356,1357,1009,1359,1016,1361,1363,1364,1366],"callout",{"color":431,"icon":13},[310,1358,1206],{},[310,1360,1221],{},[310,1362,1235],{}," all default to ",[310,1365,1211],{},". You only need to set them if you want to change the defaults.",[292,1368,1370],{"id":1369},"sending-logs-to-the-server","Sending Logs to the Server",[288,1372,1373],{},"By default, client logs only appear in the browser console. To persist them, you have two options:",[813,1375,1377],{"id":1376},"built-in-transport","Built-in Transport",[288,1379,1380,1381,1383,1384,1387,1388,1391],{},"The simplest approach is to enable the built-in transport in ",[310,1382,1175],{},". Each log is sent individually via ",[310,1385,1386],{},"fetch"," with ",[310,1389,1390],{},"keepalive: true",". Good for low-volume apps.",[299,1393,1394,1513],{},[302,1395,1397],{"className":304,"code":1396,"filename":306,"language":307,"meta":308,"style":308},"import { initLog } from 'evlog\u002Fclient'\n\nexport default defineNuxtPlugin(() => {\n  initLog({\n    service: 'web',\n    transport: {\n      enabled: true,\n      endpoint: '\u002Fapi\u002F_evlog\u002Fingest',\n    },\n  })\n})\n",[310,1398,1399,1417,1421,1437,1445,1460,1469,1480,1495,1500,1507],{"__ignoreMap":308},[313,1400,1401,1403,1405,1407,1409,1411,1413,1415],{"class":315,"line":316},[313,1402,320],{"class":319},[313,1404,324],{"class":323},[313,1406,328],{"class":327},[313,1408,337],{"class":323},[313,1410,340],{"class":319},[313,1412,343],{"class":323},[313,1414,347],{"class":346},[313,1416,350],{"class":323},[313,1418,1419],{"class":315,"line":353},[313,1420,357],{"emptyLinePlaceholder":356},[313,1422,1423,1425,1427,1429,1431,1433,1435],{"class":315,"line":360},[313,1424,363],{"class":319},[313,1426,366],{"class":319},[313,1428,370],{"class":369},[313,1430,373],{"class":327},[313,1432,376],{"class":323},[313,1434,380],{"class":379},[313,1436,383],{"class":323},[313,1438,1439,1441,1443],{"class":315,"line":386},[313,1440,389],{"class":369},[313,1442,373],{"class":392},[313,1444,1285],{"class":323},[313,1446,1447,1450,1452,1454,1456,1458],{"class":315,"line":417},[313,1448,1449],{"class":392},"    service",[313,1451,401],{"class":323},[313,1453,343],{"class":323},[313,1455,406],{"class":346},[313,1457,409],{"class":323},[313,1459,1301],{"class":323},[313,1461,1462,1465,1467],{"class":315,"line":422},[313,1463,1464],{"class":392},"    transport",[313,1466,401],{"class":323},[313,1468,383],{"class":323},[313,1470,1471,1474,1476,1478],{"class":315,"line":474},[313,1472,1473],{"class":392},"      enabled",[313,1475,401],{"class":323},[313,1477,1321],{"class":1320},[313,1479,1301],{"class":323},[313,1481,1482,1485,1487,1489,1491,1493],{"class":315,"line":619},[313,1483,1484],{"class":392},"      endpoint",[313,1486,401],{"class":323},[313,1488,343],{"class":323},[313,1490,1335],{"class":346},[313,1492,409],{"class":323},[313,1494,1301],{"class":323},[313,1496,1497],{"class":315,"line":663},[313,1498,1499],{"class":323},"    },\n",[313,1501,1502,1505],{"class":315,"line":672},[313,1503,1504],{"class":323},"  }",[313,1506,414],{"class":392},[313,1508,1509,1511],{"class":315,"line":677},[313,1510,477],{"class":323},[313,1512,414],{"class":327},[302,1514,1516],{"className":304,"code":1515,"filename":701,"language":307,"meta":308,"style":308},"import { initLog } from 'evlog\u002Fclient'\n\ninitLog({\n  service: 'web',\n  transport: {\n    enabled: true,\n    endpoint: '\u002Fapi\u002F_evlog\u002Fingest',\n  },\n})\n",[310,1517,1518,1536,1540,1548,1562,1570,1580,1594,1598],{"__ignoreMap":308},[313,1519,1520,1522,1524,1526,1528,1530,1532,1534],{"class":315,"line":316},[313,1521,320],{"class":319},[313,1523,324],{"class":323},[313,1525,328],{"class":327},[313,1527,337],{"class":323},[313,1529,340],{"class":319},[313,1531,343],{"class":323},[313,1533,347],{"class":346},[313,1535,350],{"class":323},[313,1537,1538],{"class":315,"line":353},[313,1539,357],{"emptyLinePlaceholder":356},[313,1541,1542,1544,1546],{"class":315,"line":360},[313,1543,734],{"class":369},[313,1545,373],{"class":327},[313,1547,1285],{"class":323},[313,1549,1550,1552,1554,1556,1558,1560],{"class":315,"line":386},[313,1551,1290],{"class":392},[313,1553,401],{"class":323},[313,1555,343],{"class":323},[313,1557,406],{"class":346},[313,1559,409],{"class":323},[313,1561,1301],{"class":323},[313,1563,1564,1566,1568],{"class":315,"line":417},[313,1565,1306],{"class":392},[313,1567,401],{"class":323},[313,1569,383],{"class":323},[313,1571,1572,1574,1576,1578],{"class":315,"line":422},[313,1573,1315],{"class":392},[313,1575,401],{"class":323},[313,1577,1321],{"class":1320},[313,1579,1301],{"class":323},[313,1581,1582,1584,1586,1588,1590,1592],{"class":315,"line":474},[313,1583,1328],{"class":392},[313,1585,401],{"class":323},[313,1587,343],{"class":323},[313,1589,1335],{"class":346},[313,1591,409],{"class":323},[313,1593,1301],{"class":323},[313,1595,1596],{"class":315,"line":619},[313,1597,1347],{"class":323},[313,1599,1600,1602],{"class":315,"line":663},[313,1601,477],{"class":323},[313,1603,414],{"class":327},[1355,1605,1606,1607,1612],{"color":431,"icon":13},"In Nuxt with the evlog module, the server ingest endpoint is auto-registered. For other frameworks, you need to create the endpoint yourself. See the ",[1608,1609,1611],"a",{"href":1610},"\u002Fadapters\u002Fbrowser#server-endpoint","Browser Drain"," docs for Express and Hono examples.",[813,1614,1616],{"id":1615},"browser-drain-pipeline","Browser Drain Pipeline",[288,1618,1619],{},"For higher volume or when you need batching, retries, and page-exit flushing, use the browser drain. This works with any frontend and has no framework dependency.",[299,1621,1622,1853],{},[302,1623,1625],{"className":304,"code":1624,"filename":306,"language":307,"meta":308,"style":308},"import { initLogger, log } from 'evlog'\nimport { createBrowserLogDrain } from 'evlog\u002Fbrowser'\n\nexport default defineNuxtPlugin(() => {\n  const drain = createBrowserLogDrain({\n    drain: { endpoint: '\u002Fapi\u002F_evlog\u002Fingest' },\n    pipeline: {\n      batch: { size: 25, intervalMs: 2000 },\n      retry: { maxAttempts: 2 },\n    },\n  })\n\n  initLogger({ drain })\n  log.info({ action: 'app_init' })\n})\n",[310,1626,1627,1651,1671,1675,1691,1708,1731,1740,1770,1789,1793,1799,1803,1819,1846],{"__ignoreMap":308},[313,1628,1629,1631,1633,1636,1638,1640,1642,1644,1646,1649],{"class":315,"line":316},[313,1630,320],{"class":319},[313,1632,324],{"class":323},[313,1634,1635],{"class":327}," initLogger",[313,1637,331],{"class":323},[313,1639,334],{"class":327},[313,1641,337],{"class":323},[313,1643,340],{"class":319},[313,1645,343],{"class":323},[313,1647,1648],{"class":346},"evlog",[313,1650,350],{"class":323},[313,1652,1653,1655,1657,1660,1662,1664,1666,1669],{"class":315,"line":353},[313,1654,320],{"class":319},[313,1656,324],{"class":323},[313,1658,1659],{"class":327}," createBrowserLogDrain",[313,1661,337],{"class":323},[313,1663,340],{"class":319},[313,1665,343],{"class":323},[313,1667,1668],{"class":346},"evlog\u002Fbrowser",[313,1670,350],{"class":323},[313,1672,1673],{"class":315,"line":360},[313,1674,357],{"emptyLinePlaceholder":356},[313,1676,1677,1679,1681,1683,1685,1687,1689],{"class":315,"line":386},[313,1678,363],{"class":319},[313,1680,366],{"class":319},[313,1682,370],{"class":369},[313,1684,373],{"class":327},[313,1686,376],{"class":323},[313,1688,380],{"class":379},[313,1690,383],{"class":323},[313,1692,1693,1696,1699,1702,1704,1706],{"class":315,"line":417},[313,1694,1695],{"class":379},"  const",[313,1697,1698],{"class":327}," drain",[313,1700,1701],{"class":323}," =",[313,1703,1659],{"class":369},[313,1705,373],{"class":392},[313,1707,1285],{"class":323},[313,1709,1710,1713,1715,1717,1720,1722,1724,1726,1728],{"class":315,"line":422},[313,1711,1712],{"class":392},"    drain",[313,1714,401],{"class":323},[313,1716,324],{"class":323},[313,1718,1719],{"class":392}," endpoint",[313,1721,401],{"class":323},[313,1723,343],{"class":323},[313,1725,1335],{"class":346},[313,1727,409],{"class":323},[313,1729,1730],{"class":323}," },\n",[313,1732,1733,1736,1738],{"class":315,"line":474},[313,1734,1735],{"class":392},"    pipeline",[313,1737,401],{"class":323},[313,1739,383],{"class":323},[313,1741,1742,1745,1747,1749,1752,1754,1758,1760,1763,1765,1768],{"class":315,"line":619},[313,1743,1744],{"class":392},"      batch",[313,1746,401],{"class":323},[313,1748,324],{"class":323},[313,1750,1751],{"class":392}," size",[313,1753,401],{"class":323},[313,1755,1757],{"class":1756},"sbssI"," 25",[313,1759,331],{"class":323},[313,1761,1762],{"class":392}," intervalMs",[313,1764,401],{"class":323},[313,1766,1767],{"class":1756}," 2000",[313,1769,1730],{"class":323},[313,1771,1772,1775,1777,1779,1782,1784,1787],{"class":315,"line":663},[313,1773,1774],{"class":392},"      retry",[313,1776,401],{"class":323},[313,1778,324],{"class":323},[313,1780,1781],{"class":392}," maxAttempts",[313,1783,401],{"class":323},[313,1785,1786],{"class":1756}," 2",[313,1788,1730],{"class":323},[313,1790,1791],{"class":315,"line":672},[313,1792,1499],{"class":323},[313,1794,1795,1797],{"class":315,"line":677},[313,1796,1504],{"class":323},[313,1798,414],{"class":392},[313,1800,1801],{"class":315,"line":694},[313,1802,357],{"emptyLinePlaceholder":356},[313,1804,1806,1809,1811,1813,1815,1817],{"class":315,"line":1805},13,[313,1807,1808],{"class":369},"  initLogger",[313,1810,373],{"class":392},[313,1812,395],{"class":323},[313,1814,1698],{"class":327},[313,1816,337],{"class":323},[313,1818,414],{"class":392},[313,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844],{"class":315,"line":1821},14,[313,1823,425],{"class":327},[313,1825,428],{"class":323},[313,1827,431],{"class":369},[313,1829,373],{"class":392},[313,1831,395],{"class":323},[313,1833,438],{"class":392},[313,1835,401],{"class":323},[313,1837,343],{"class":323},[313,1839,445],{"class":346},[313,1841,409],{"class":323},[313,1843,337],{"class":323},[313,1845,414],{"class":392},[313,1847,1849,1851],{"class":315,"line":1848},15,[313,1850,477],{"class":323},[313,1852,414],{"class":327},[302,1854,1856],{"className":304,"code":1855,"filename":701,"language":307,"meta":308,"style":308},"import { initLogger, log } from 'evlog'\nimport { createBrowserLogDrain } from 'evlog\u002Fbrowser'\n\nconst drain = createBrowserLogDrain({\n  drain: { endpoint: 'https:\u002F\u002Flogs.example.com\u002Fv1\u002Fingest' },\n  pipeline: {\n    batch: { size: 25, intervalMs: 2000 },\n    retry: { maxAttempts: 2 },\n  },\n})\n\ninitLogger({ drain })\nlog.info({ action: 'app_init' })\n",[310,1857,1858,1880,1898,1902,1919,1941,1950,1975,1992,1996,2002,2006,2021],{"__ignoreMap":308},[313,1859,1860,1862,1864,1866,1868,1870,1872,1874,1876,1878],{"class":315,"line":316},[313,1861,320],{"class":319},[313,1863,324],{"class":323},[313,1865,1635],{"class":327},[313,1867,331],{"class":323},[313,1869,334],{"class":327},[313,1871,337],{"class":323},[313,1873,340],{"class":319},[313,1875,343],{"class":323},[313,1877,1648],{"class":346},[313,1879,350],{"class":323},[313,1881,1882,1884,1886,1888,1890,1892,1894,1896],{"class":315,"line":353},[313,1883,320],{"class":319},[313,1885,324],{"class":323},[313,1887,1659],{"class":327},[313,1889,337],{"class":323},[313,1891,340],{"class":319},[313,1893,343],{"class":323},[313,1895,1668],{"class":346},[313,1897,350],{"class":323},[313,1899,1900],{"class":315,"line":360},[313,1901,357],{"emptyLinePlaceholder":356},[313,1903,1904,1907,1910,1913,1915,1917],{"class":315,"line":386},[313,1905,1906],{"class":379},"const",[313,1908,1909],{"class":327}," drain ",[313,1911,1912],{"class":323},"=",[313,1914,1659],{"class":369},[313,1916,373],{"class":327},[313,1918,1285],{"class":323},[313,1920,1921,1924,1926,1928,1930,1932,1934,1937,1939],{"class":315,"line":417},[313,1922,1923],{"class":392},"  drain",[313,1925,401],{"class":323},[313,1927,324],{"class":323},[313,1929,1719],{"class":392},[313,1931,401],{"class":323},[313,1933,343],{"class":323},[313,1935,1936],{"class":346},"https:\u002F\u002Flogs.example.com\u002Fv1\u002Fingest",[313,1938,409],{"class":323},[313,1940,1730],{"class":323},[313,1942,1943,1946,1948],{"class":315,"line":422},[313,1944,1945],{"class":392},"  pipeline",[313,1947,401],{"class":323},[313,1949,383],{"class":323},[313,1951,1952,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973],{"class":315,"line":474},[313,1953,1954],{"class":392},"    batch",[313,1956,401],{"class":323},[313,1958,324],{"class":323},[313,1960,1751],{"class":392},[313,1962,401],{"class":323},[313,1964,1757],{"class":1756},[313,1966,331],{"class":323},[313,1968,1762],{"class":392},[313,1970,401],{"class":323},[313,1972,1767],{"class":1756},[313,1974,1730],{"class":323},[313,1976,1977,1980,1982,1984,1986,1988,1990],{"class":315,"line":619},[313,1978,1979],{"class":392},"    retry",[313,1981,401],{"class":323},[313,1983,324],{"class":323},[313,1985,1781],{"class":392},[313,1987,401],{"class":323},[313,1989,1786],{"class":1756},[313,1991,1730],{"class":323},[313,1993,1994],{"class":315,"line":663},[313,1995,1347],{"class":323},[313,1997,1998,2000],{"class":315,"line":672},[313,1999,477],{"class":323},[313,2001,414],{"class":327},[313,2003,2004],{"class":315,"line":677},[313,2005,357],{"emptyLinePlaceholder":356},[313,2007,2008,2011,2013,2015,2017,2019],{"class":315,"line":694},[313,2009,2010],{"class":369},"initLogger",[313,2012,373],{"class":327},[313,2014,395],{"class":323},[313,2016,1909],{"class":327},[313,2018,477],{"class":323},[313,2020,414],{"class":327},[313,2022,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045],{"class":315,"line":1805},[313,2024,757],{"class":327},[313,2026,428],{"class":323},[313,2028,431],{"class":369},[313,2030,373],{"class":327},[313,2032,395],{"class":323},[313,2034,438],{"class":392},[313,2036,401],{"class":323},[313,2038,343],{"class":323},[313,2040,445],{"class":346},[313,2042,409],{"class":323},[313,2044,337],{"class":323},[313,2046,414],{"class":327},[288,2048,2049],{},"The browser drain automatically:",[2051,2052,2053,2061,2067],"ul",{},[2054,2055,2056,2060],"li",{},[2057,2058,2059],"strong",{},"Batches"," events by size and time interval",[2054,2062,2063,2066],{},[2057,2064,2065],{},"Retries"," failed sends with exponential backoff",[2054,2068,2069,2072,2073,2076],{},[2057,2070,2071],{},"Flushes"," buffered events via ",[310,2074,2075],{},"sendBeacon"," when the page becomes hidden (tab switch, navigation, close)",[1355,2078,2081,2082,2084],{"color":2079,"icon":2080},"neutral","i-lucide-arrow-right","See the ",[1608,2083,1611],{"href":209}," adapter docs for full configuration reference, authentication, and server endpoint examples.",[292,2086,2088],{"id":2087},"next-steps","Next Steps",[2051,2090,2091,2096,2101],{},[2054,2092,2093,2095],{},[1608,2094,1611],{"href":209}," - Batching, retry, and sendBeacon fallback",[2054,2097,2098,2100],{},[1608,2099,203],{"href":204}," - Advanced pipeline configuration",[2054,2102,2103,2105],{},[1608,2104,51],{"href":52}," - Surface client errors with actionable context",[2107,2108,2109],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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}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}",{"title":308,"searchDepth":353,"depth":353,"links":2111},[2112,2113,2118,2119,2120,2124],{"id":294,"depth":353,"text":20},{"id":805,"depth":353,"text":806,"children":2114},[2115,2116,2117],{"id":815,"depth":360,"text":816},{"id":944,"depth":360,"text":945},{"id":1001,"depth":360,"text":1002},{"id":1022,"depth":353,"text":1023},{"id":1170,"depth":353,"text":76},{"id":1369,"depth":353,"text":1370,"children":2121},[2122,2123],{"id":1376,"depth":360,"text":1377},{"id":1615,"depth":360,"text":1616},{"id":2087,"depth":353,"text":2088},"Capture browser events with structured logging. Same API as the server, with automatic console styling, user identity context, and optional server transport.","md",[2128,2130],{"label":1611,"icon":211,"to":209,"color":2079,"variant":2129},"subtle",{"label":46,"icon":49,"to":47,"color":2079,"variant":2129},{},{"icon":59},{"title":56,"description":2125},"X9Gi9XHVCD9MhuBa5rw9hozrMvOH-FjAkLtDPO-nWeo",[2136,2138],{"title":51,"path":52,"stem":53,"description":2137,"icon":54,"children":-1},"Create errors that explain why they occurred and how to fix them. Add actionable context with why, fix, and link fields for humans and AI agents.",{"title":61,"path":62,"stem":63,"description":2139,"icon":64,"children":-1},"Capture token usage, tool calls, model info, and streaming metrics from the Vercel AI SDK into wide events. Wrap your model and get full AI observability.",1775319487945]