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