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