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