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