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