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