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