[{"data":1,"prerenderedAt":2297},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-client-logging":263,"-core-concepts-client-logging-surround":2292},[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":2282,"extension":2283,"links":2284,"meta":2288,"navigation":2289,"path":161,"seo":2290,"stem":162,"__hash__":2291},"docs\u002F3.core-concepts\u002F6.client-logging.md",{"type":266,"value":267,"toc":2267},"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,1762,1772,1776,1779,2204,2207,2234,2242,2246,2263],[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,1671],{},[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',\n    },\n  })\n})\n",[291,1556,1557,1575,1579,1595,1603,1618,1627,1638,1653,1658,1665],{"__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],{"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,1440],{"class":304},[294,1654,1655],{"class":296,"line":644},[294,1656,1657],{"class":304},"    },\n",[294,1659,1660,1663],{"class":296,"line":653},[294,1661,1662],{"class":304},"  }",[294,1664,395],{"class":373},[294,1666,1667,1669],{"class":296,"line":658},[294,1668,458],{"class":304},[294,1670,395],{"class":308},[283,1672,1674],{"className":285,"code":1673,"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,1675,1676,1694,1698,1706,1720,1728,1738,1752,1756],{"__ignoreMap":289},[294,1677,1678,1680,1682,1684,1686,1688,1690,1692],{"class":296,"line":297},[294,1679,301],{"class":300},[294,1681,305],{"class":304},[294,1683,309],{"class":308},[294,1685,318],{"class":304},[294,1687,321],{"class":300},[294,1689,324],{"class":304},[294,1691,328],{"class":327},[294,1693,331],{"class":304},[294,1695,1696],{"class":296,"line":334},[294,1697,338],{"emptyLinePlaceholder":337},[294,1699,1700,1702,1704],{"class":296,"line":341},[294,1701,715],{"class":350},[294,1703,354],{"class":308},[294,1705,1426],{"class":304},[294,1707,1708,1710,1712,1714,1716,1718],{"class":296,"line":367},[294,1709,1467],{"class":373},[294,1711,382],{"class":304},[294,1713,324],{"class":304},[294,1715,387],{"class":327},[294,1717,390],{"class":304},[294,1719,1440],{"class":304},[294,1721,1722,1724,1726],{"class":296,"line":398},[294,1723,1482],{"class":373},[294,1725,382],{"class":304},[294,1727,364],{"class":304},[294,1729,1730,1732,1734,1736],{"class":296,"line":403},[294,1731,1491],{"class":373},[294,1733,382],{"class":304},[294,1735,1437],{"class":1436},[294,1737,1440],{"class":304},[294,1739,1740,1742,1744,1746,1748,1750],{"class":296,"line":455},[294,1741,1502],{"class":373},[294,1743,382],{"class":304},[294,1745,324],{"class":304},[294,1747,1509],{"class":327},[294,1749,390],{"class":304},[294,1751,1440],{"class":304},[294,1753,1754],{"class":296,"line":600},[294,1755,1518],{"class":304},[294,1757,1758,1760],{"class":296,"line":644},[294,1759,458],{"class":304},[294,1761,395],{"class":308},[1763,1764,1765,1766,1771],"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 ",[1767,1768,1770],"a",{"href":1769},"\u002Fadapters\u002Fbrowser#server-endpoint","Browser Drain"," docs for Express and Hono examples.",[789,1773,1775],{"id":1774},"browser-drain-pipeline","Browser Drain Pipeline",[269,1777,1778],{},"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,1780,1781,2010],{},[283,1782,1784],{"className":285,"code":1783,"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,1785,1786,1810,1830,1834,1850,1867,1889,1898,1927,1946,1950,1956,1960,1976,2003],{"__ignoreMap":289},[294,1787,1788,1790,1792,1795,1797,1799,1801,1803,1805,1808],{"class":296,"line":297},[294,1789,301],{"class":300},[294,1791,305],{"class":304},[294,1793,1794],{"class":308}," initLogger",[294,1796,312],{"class":304},[294,1798,315],{"class":308},[294,1800,318],{"class":304},[294,1802,321],{"class":300},[294,1804,324],{"class":304},[294,1806,1807],{"class":327},"evlog",[294,1809,331],{"class":304},[294,1811,1812,1814,1816,1819,1821,1823,1825,1828],{"class":296,"line":334},[294,1813,301],{"class":300},[294,1815,305],{"class":304},[294,1817,1818],{"class":308}," createBrowserLogDrain",[294,1820,318],{"class":304},[294,1822,321],{"class":300},[294,1824,324],{"class":304},[294,1826,1827],{"class":327},"evlog\u002Fbrowser",[294,1829,331],{"class":304},[294,1831,1832],{"class":296,"line":341},[294,1833,338],{"emptyLinePlaceholder":337},[294,1835,1836,1838,1840,1842,1844,1846,1848],{"class":296,"line":367},[294,1837,344],{"class":300},[294,1839,347],{"class":300},[294,1841,351],{"class":350},[294,1843,354],{"class":308},[294,1845,357],{"class":304},[294,1847,361],{"class":360},[294,1849,364],{"class":304},[294,1851,1852,1855,1858,1861,1863,1865],{"class":296,"line":398},[294,1853,1854],{"class":360},"  const",[294,1856,1857],{"class":308}," drain",[294,1859,1860],{"class":304}," =",[294,1862,1818],{"class":350},[294,1864,354],{"class":373},[294,1866,1426],{"class":304},[294,1868,1869,1872,1874,1876,1878,1880,1882,1884,1886],{"class":296,"line":403},[294,1870,1871],{"class":373},"    drain",[294,1873,382],{"class":304},[294,1875,305],{"class":304},[294,1877,939],{"class":373},[294,1879,382],{"class":304},[294,1881,324],{"class":304},[294,1883,1509],{"class":327},[294,1885,390],{"class":304},[294,1887,1888],{"class":304}," },\n",[294,1890,1891,1894,1896],{"class":296,"line":455},[294,1892,1893],{"class":373},"    pipeline",[294,1895,382],{"class":304},[294,1897,364],{"class":304},[294,1899,1900,1903,1905,1907,1910,1912,1915,1917,1920,1922,1925],{"class":296,"line":600},[294,1901,1902],{"class":373},"      batch",[294,1904,382],{"class":304},[294,1906,305],{"class":304},[294,1908,1909],{"class":373}," size",[294,1911,382],{"class":304},[294,1913,1914],{"class":905}," 25",[294,1916,312],{"class":304},[294,1918,1919],{"class":373}," intervalMs",[294,1921,382],{"class":304},[294,1923,1924],{"class":905}," 2000",[294,1926,1888],{"class":304},[294,1928,1929,1932,1934,1936,1939,1941,1944],{"class":296,"line":644},[294,1930,1931],{"class":373},"      retry",[294,1933,382],{"class":304},[294,1935,305],{"class":304},[294,1937,1938],{"class":373}," maxAttempts",[294,1940,382],{"class":304},[294,1942,1943],{"class":905}," 2",[294,1945,1888],{"class":304},[294,1947,1948],{"class":296,"line":653},[294,1949,1657],{"class":304},[294,1951,1952,1954],{"class":296,"line":658},[294,1953,1662],{"class":304},[294,1955,395],{"class":373},[294,1957,1958],{"class":296,"line":675},[294,1959,338],{"emptyLinePlaceholder":337},[294,1961,1963,1966,1968,1970,1972,1974],{"class":296,"line":1962},13,[294,1964,1965],{"class":350},"  initLogger",[294,1967,354],{"class":373},[294,1969,376],{"class":304},[294,1971,1857],{"class":308},[294,1973,318],{"class":304},[294,1975,395],{"class":373},[294,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001],{"class":296,"line":1978},14,[294,1980,406],{"class":308},[294,1982,409],{"class":304},[294,1984,412],{"class":350},[294,1986,354],{"class":373},[294,1988,376],{"class":304},[294,1990,419],{"class":373},[294,1992,382],{"class":304},[294,1994,324],{"class":304},[294,1996,426],{"class":327},[294,1998,390],{"class":304},[294,2000,318],{"class":304},[294,2002,395],{"class":373},[294,2004,2006,2008],{"class":296,"line":2005},15,[294,2007,458],{"class":304},[294,2009,395],{"class":308},[283,2011,2013],{"className":285,"code":2012,"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,2014,2015,2037,2055,2059,2076,2098,2107,2132,2149,2153,2159,2163,2178],{"__ignoreMap":289},[294,2016,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035],{"class":296,"line":297},[294,2018,301],{"class":300},[294,2020,305],{"class":304},[294,2022,1794],{"class":308},[294,2024,312],{"class":304},[294,2026,315],{"class":308},[294,2028,318],{"class":304},[294,2030,321],{"class":300},[294,2032,324],{"class":304},[294,2034,1807],{"class":327},[294,2036,331],{"class":304},[294,2038,2039,2041,2043,2045,2047,2049,2051,2053],{"class":296,"line":334},[294,2040,301],{"class":300},[294,2042,305],{"class":304},[294,2044,1818],{"class":308},[294,2046,318],{"class":304},[294,2048,321],{"class":300},[294,2050,324],{"class":304},[294,2052,1827],{"class":327},[294,2054,331],{"class":304},[294,2056,2057],{"class":296,"line":341},[294,2058,338],{"emptyLinePlaceholder":337},[294,2060,2061,2064,2067,2070,2072,2074],{"class":296,"line":367},[294,2062,2063],{"class":360},"const",[294,2065,2066],{"class":308}," drain ",[294,2068,2069],{"class":304},"=",[294,2071,1818],{"class":350},[294,2073,354],{"class":308},[294,2075,1426],{"class":304},[294,2077,2078,2081,2083,2085,2087,2089,2091,2094,2096],{"class":296,"line":398},[294,2079,2080],{"class":373},"  drain",[294,2082,382],{"class":304},[294,2084,305],{"class":304},[294,2086,939],{"class":373},[294,2088,382],{"class":304},[294,2090,324],{"class":304},[294,2092,2093],{"class":327},"https:\u002F\u002Flogs.example.com\u002Fv1\u002Fingest",[294,2095,390],{"class":304},[294,2097,1888],{"class":304},[294,2099,2100,2103,2105],{"class":296,"line":403},[294,2101,2102],{"class":373},"  pipeline",[294,2104,382],{"class":304},[294,2106,364],{"class":304},[294,2108,2109,2112,2114,2116,2118,2120,2122,2124,2126,2128,2130],{"class":296,"line":455},[294,2110,2111],{"class":373},"    batch",[294,2113,382],{"class":304},[294,2115,305],{"class":304},[294,2117,1909],{"class":373},[294,2119,382],{"class":304},[294,2121,1914],{"class":905},[294,2123,312],{"class":304},[294,2125,1919],{"class":373},[294,2127,382],{"class":304},[294,2129,1924],{"class":905},[294,2131,1888],{"class":304},[294,2133,2134,2137,2139,2141,2143,2145,2147],{"class":296,"line":600},[294,2135,2136],{"class":373},"    retry",[294,2138,382],{"class":304},[294,2140,305],{"class":304},[294,2142,1938],{"class":373},[294,2144,382],{"class":304},[294,2146,1943],{"class":905},[294,2148,1888],{"class":304},[294,2150,2151],{"class":296,"line":644},[294,2152,1518],{"class":304},[294,2154,2155,2157],{"class":296,"line":653},[294,2156,458],{"class":304},[294,2158,395],{"class":308},[294,2160,2161],{"class":296,"line":658},[294,2162,338],{"emptyLinePlaceholder":337},[294,2164,2165,2168,2170,2172,2174,2176],{"class":296,"line":675},[294,2166,2167],{"class":350},"initLogger",[294,2169,354],{"class":308},[294,2171,376],{"class":304},[294,2173,2066],{"class":308},[294,2175,458],{"class":304},[294,2177,395],{"class":308},[294,2179,2180,2182,2184,2186,2188,2190,2192,2194,2196,2198,2200,2202],{"class":296,"line":1962},[294,2181,738],{"class":308},[294,2183,409],{"class":304},[294,2185,412],{"class":350},[294,2187,354],{"class":308},[294,2189,376],{"class":304},[294,2191,419],{"class":373},[294,2193,382],{"class":304},[294,2195,324],{"class":304},[294,2197,426],{"class":327},[294,2199,390],{"class":304},[294,2201,318],{"class":304},[294,2203,395],{"class":308},[269,2205,2206],{},"The browser drain automatically:",[2208,2209,2210,2218,2224],"ul",{},[2211,2212,2213,2217],"li",{},[2214,2215,2216],"strong",{},"Batches"," events by size and time interval",[2211,2219,2220,2223],{},[2214,2221,2222],{},"Retries"," failed sends with exponential backoff",[2211,2225,2226,2229,2230,2233],{},[2214,2227,2228],{},"Flushes"," buffered events via ",[291,2231,2232],{},"sendBeacon"," when the page becomes hidden (tab switch, navigation, close)",[1763,2235,2238,2239,2241],{"color":2236,"icon":2237},"neutral","i-lucide-arrow-right","See the ",[1767,2240,1770],{"href":190}," adapter docs for full configuration reference, authentication, and server endpoint examples.",[273,2243,2245],{"id":2244},"next-steps","Next Steps",[2208,2247,2248,2253,2258],{},[2211,2249,2250,2252],{},[1767,2251,1770],{"href":190}," - Batching, retry, and sendBeacon fallback",[2211,2254,2255,2257],{},[1767,2256,184],{"href":185}," - Advanced pipeline configuration",[2211,2259,2260,2262],{},[1767,2261,141],{"href":142}," - Surface client errors with actionable context",[2264,2265,2266],"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":2268},[2269,2270,2275,2276,2277,2281],{"id":275,"depth":334,"text":20},{"id":786,"depth":334,"text":787,"children":2271},[2272,2273,2274],{"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":2278},[2279,2280],{"id":1534,"depth":341,"text":1535},{"id":1774,"depth":341,"text":1775},{"id":2244,"depth":334,"text":2245},"Capture browser events with structured logging. Same API as the server, with automatic console styling, user identity context, and optional server transport.","md",[2285,2287],{"label":1770,"icon":192,"to":190,"color":2236,"variant":2286},"subtle",{"label":126,"icon":129,"to":127,"color":2236,"variant":2286},{},{"icon":163},{"title":160,"description":2282},"FFKxSJA7pGRuWQmxBDt_p3tD3UQHEoHGG4yD-XlsOmM",[2293,2295],{"title":155,"path":156,"stem":157,"description":2294,"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":2296,"icon":168,"children":-1},"Complete reference for all evlog configuration options including global logger settings, middleware options, environment context, and framework-specific overrides.",1775236123350]