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