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