[{"data":1,"prerenderedAt":2708},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-client-logging":500,"-use-cases-client-logging-surround":2703},[4,30,80,118,283,415,470],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"CLI","\u002Fcli","3.cli",[85,88,93,98,103,108,113],{"title":36,"path":86,"stem":87,"icon":44},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":89,"path":90,"stem":91,"icon":92},"map","\u002Fcli\u002Fmap","3.cli\u002F1.map","i-lucide-radar",{"title":94,"path":95,"stem":96,"icon":97},"Rules","\u002Fcli\u002Frules","3.cli\u002F2.rules","i-lucide-list-checks",{"title":99,"path":100,"stem":101,"icon":102},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F3.scoring","i-lucide-gauge",{"title":104,"path":105,"stem":106,"icon":107},"CI","\u002Fcli\u002Fci","3.cli\u002F4.ci","i-lucide-git-pull-request",{"title":109,"path":110,"stem":111,"icon":112},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F5.doctor","i-lucide-stethoscope",{"title":114,"path":115,"stem":116,"icon":117},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F6.telemetry","i-lucide-bar-chart-3",{"title":119,"path":120,"stem":121,"children":122,"page":29},"Integrate","\u002Fintegrate","4.integrate",[123,127,195],{"title":36,"path":124,"stem":125,"icon":126},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":128,"path":129,"stem":130,"children":131,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[132,135,175],{"title":36,"path":133,"stem":134,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":136,"path":137,"stem":138,"children":139,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[140,145,150,155,160,165,170],{"title":141,"path":142,"stem":143,"icon":144},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":146,"path":147,"stem":148,"icon":149},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","4.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":151,"path":152,"stem":153,"icon":154},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":156,"path":157,"stem":158,"icon":159},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":161,"path":162,"stem":163,"icon":164},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":166,"path":167,"stem":168,"icon":169},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":171,"path":172,"stem":173,"icon":174},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","4.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":176,"path":177,"stem":178,"children":179,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[180,185,190],{"title":181,"path":182,"stem":183,"icon":184},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":186,"path":187,"stem":188,"icon":189},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":191,"path":192,"stem":193,"icon":194},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":196,"path":197,"stem":198,"children":199,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[200,204,209,214,219,224,229,234,239,244,249,254,259,264,268,273,278],{"title":36,"path":201,"stem":202,"icon":203},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":205,"path":206,"stem":207,"icon":208},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":210,"path":211,"stem":212,"icon":213},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":215,"path":216,"stem":217,"icon":218},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":220,"path":221,"stem":222,"icon":223},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":225,"path":226,"stem":227,"icon":228},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":230,"path":231,"stem":232,"icon":233},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":235,"path":236,"stem":237,"icon":238},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":240,"path":241,"stem":242,"icon":243},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":245,"path":246,"stem":247,"icon":248},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":250,"path":251,"stem":252,"icon":253},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":255,"path":256,"stem":257,"icon":258},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":260,"path":261,"stem":262,"icon":263},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":265,"path":266,"stem":267,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":269,"path":270,"stem":271,"icon":272},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":274,"path":275,"stem":276,"icon":277},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":279,"path":280,"stem":281,"icon":282},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":284,"path":285,"stem":286,"children":287,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[288,291,296,325,352,384,405,410],{"title":36,"path":289,"stem":290,"icon":97},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":292,"path":293,"stem":294,"icon":295},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":297,"icon":298,"path":299,"stem":300,"children":301,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[302,305,310,315,320],{"title":36,"path":303,"stem":304,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":306,"path":307,"stem":308,"icon":309},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":311,"path":312,"stem":313,"icon":314},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":316,"path":317,"stem":318,"icon":319},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":321,"path":322,"stem":323,"icon":324},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":326,"icon":327,"path":328,"stem":329,"children":330,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[331,334,339,344,348],{"title":36,"path":332,"stem":333,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":335,"path":336,"stem":337,"icon":338},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":340,"path":341,"stem":342,"icon":343},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":345,"path":346,"stem":347,"icon":295},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":349,"path":350,"stem":351,"icon":102},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":353,"icon":354,"path":355,"stem":356,"children":357,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[358,361,366,371,376,380],{"title":36,"path":359,"stem":360,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":362,"path":363,"stem":364,"icon":365},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":367,"path":368,"stem":369,"icon":370},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":372,"path":373,"stem":374,"icon":375},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":377,"path":378,"stem":379,"icon":354},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":381,"path":382,"stem":383,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":321,"icon":102,"path":385,"stem":386,"children":387,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[388,391,396,401],{"title":36,"path":389,"stem":390,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":392,"path":393,"stem":394,"icon":395},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":397,"path":398,"stem":399,"icon":400},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":402,"path":403,"stem":404,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":406,"path":407,"stem":408,"icon":409},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":411,"path":412,"stem":413,"icon":414},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":416,"path":417,"stem":418,"children":419,"page":29},"Extend","\u002Fextend","6.extend",[420,424,429,434,439,443,447,451,455,460,465],{"title":36,"path":421,"stem":422,"icon":423},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":425,"path":426,"stem":427,"icon":428},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":430,"path":431,"stem":432,"icon":433},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":435,"path":436,"stem":437,"icon":438},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":381,"path":440,"stem":441,"icon":442},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":444,"path":445,"stem":446,"icon":423},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":448,"path":449,"stem":450,"icon":409},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":452,"path":453,"stem":454,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":456,"path":457,"stem":458,"icon":459},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":461,"path":462,"stem":463,"icon":464},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":466,"path":467,"stem":468,"icon":469},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":402,"path":471,"stem":472,"children":473,"page":29},"\u002Freference","7.reference",[474,479,482,487,491,496],{"title":475,"path":476,"stem":477,"icon":478},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":349,"path":480,"stem":481,"icon":102},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":483,"path":484,"stem":485,"icon":486},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":488,"path":489,"stem":490,"icon":354},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":492,"path":493,"stem":494,"icon":495},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":497,"path":498,"stem":499,"icon":409},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"id":501,"title":292,"body":502,"description":2692,"extension":2693,"links":2694,"meta":2699,"navigation":2700,"path":293,"seo":2701,"stem":294,"__hash__":2702},"docs\u002F5.use-cases\u002F1.client-logging.md",{"type":503,"value":504,"toc":2675},"minimark",[505,509,512,556,560,563,1062,1068,1076,1100,1119,1129,1133,1138,1143,1149,1210,1268,1272,1275,1309,1325,1329,1346,1367,1371,1377,1512,1515,1518,1524,1639,1722,1735,1739,1742,1746,1760,2172,2180,2184,2191,2614,2617,2641,2649,2653,2671],[506,507,508],"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.",[510,511],"client-server-beacon",{},[513,514,517,520,542],"prompt",{":actions":515,"description":516,"icon":295},"[\"copy\",\"cursor\",\"claude\"]","Ship browser logs to my server",[506,518,519],{},"Ship browser logs to my server with evlog client logging.",[521,522,523,527,530,533,536,539],"ul",{},[524,525,526],"li",{},"Detect my framework (Nuxt, Next.js, SvelteKit, etc.) and pick the matching client entrypoint",[524,528,529],{},"Call initLog({ service: 'web' }) once at app start",[524,531,532],{},"Use log.info \u002F log.warn \u002F log.error in components, composables, and event handlers",[524,534,535],{},"Set user identity with setIdentity({ userId, email }) after login, clearIdentity() on logout",[524,537,538],{},"Enable transport in the framework config so logs POST to \u002Fapi\u002F_evlog\u002Fingest in batches",[524,540,541],{},"On the server, evlog auto-runs the drain pipeline on transported events with source: 'client'",[506,543,544,545,551,552],{},"Docs: ",[546,547,548],"a",{"href":548,"rel":549},"https:\u002F\u002Fwww.evlog.dev\u002Fuse-cases\u002Fclient-logging",[550],"nofollow","\nHTTP transport: ",[546,553,554],{"href":554,"rel":555},"https:\u002F\u002Fwww.evlog.dev\u002Fextend\u002Fdrain-pipeline",[550],[557,558,25],"h2",{"id":559},"quick-start",[506,561,562],{},"evlog provides a client-side logging API that works in any browser environment:",[564,565,566,745,963],"code-group",{},[567,568,574],"pre",{"className":569,"code":570,"filename":571,"language":572,"meta":573,"style":573},"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","",[575,576,577,616,623,649,680,685,737],"code",{"__ignoreMap":573},[578,579,582,586,590,594,597,600,603,606,609,613],"span",{"class":580,"line":581},"line",1,[578,583,585],{"class":584},"s7zQu","import",[578,587,589],{"class":588},"sMK4o"," {",[578,591,593],{"class":592},"sTEyZ"," initLog",[578,595,596],{"class":588},",",[578,598,599],{"class":592}," log",[578,601,602],{"class":588}," }",[578,604,605],{"class":584}," from",[578,607,608],{"class":588}," '",[578,610,612],{"class":611},"sfazB","evlog\u002Fclient",[578,614,615],{"class":588},"'\n",[578,617,619],{"class":580,"line":618},2,[578,620,622],{"emptyLinePlaceholder":621},true,"\n",[578,624,626,629,632,636,639,642,646],{"class":580,"line":625},3,[578,627,628],{"class":584},"export",[578,630,631],{"class":584}," default",[578,633,635],{"class":634},"s2Zo4"," defineNuxtPlugin",[578,637,638],{"class":592},"(",[578,640,641],{"class":588},"()",[578,643,645],{"class":644},"spNyl"," =>",[578,647,648],{"class":588}," {\n",[578,650,652,655,658,661,664,667,669,672,675,677],{"class":580,"line":651},4,[578,653,654],{"class":634},"  initLog",[578,656,638],{"class":657},"swJcz",[578,659,660],{"class":588},"{",[578,662,663],{"class":657}," service",[578,665,666],{"class":588},":",[578,668,608],{"class":588},[578,670,671],{"class":611},"web",[578,673,674],{"class":588},"'",[578,676,602],{"class":588},[578,678,679],{"class":657},")\n",[578,681,683],{"class":580,"line":682},5,[578,684,622],{"emptyLinePlaceholder":621},[578,686,688,691,694,697,699,701,704,706,708,711,713,715,718,720,723,725,728,730,733,735],{"class":580,"line":687},6,[578,689,690],{"class":592},"  log",[578,692,693],{"class":588},".",[578,695,696],{"class":634},"info",[578,698,638],{"class":657},[578,700,660],{"class":588},[578,702,703],{"class":657}," action",[578,705,666],{"class":588},[578,707,608],{"class":588},[578,709,710],{"class":611},"app_init",[578,712,674],{"class":588},[578,714,596],{"class":588},[578,716,717],{"class":657}," path",[578,719,666],{"class":588},[578,721,722],{"class":592}," window",[578,724,693],{"class":588},[578,726,727],{"class":592},"location",[578,729,693],{"class":588},[578,731,732],{"class":592},"pathname",[578,734,602],{"class":588},[578,736,679],{"class":657},[578,738,740,743],{"class":580,"line":739},7,[578,741,742],{"class":588},"}",[578,744,679],{"class":592},[567,746,749],{"className":569,"code":747,"filename":748,"language":572,"meta":573,"style":573},"'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)",[575,750,751,760,780,802,806,846,859,882,926,935,940,957],{"__ignoreMap":573},[578,752,753,755,758],{"class":580,"line":581},[578,754,674],{"class":588},[578,756,757],{"class":611},"use client",[578,759,615],{"class":588},[578,761,762,764,766,769,771,773,775,778],{"class":580,"line":618},[578,763,585],{"class":584},[578,765,589],{"class":588},[578,767,768],{"class":592}," useEffect",[578,770,602],{"class":588},[578,772,605],{"class":584},[578,774,608],{"class":588},[578,776,777],{"class":611},"react",[578,779,615],{"class":588},[578,781,782,784,786,788,790,792,794,796,798,800],{"class":580,"line":625},[578,783,585],{"class":584},[578,785,589],{"class":588},[578,787,593],{"class":592},[578,789,596],{"class":588},[578,791,599],{"class":592},[578,793,602],{"class":588},[578,795,605],{"class":584},[578,797,608],{"class":588},[578,799,612],{"class":611},[578,801,615],{"class":588},[578,803,804],{"class":580,"line":651},[578,805,622],{"emptyLinePlaceholder":621},[578,807,808,810,813,816,819,823,826,828,830,832,836,838,841,844],{"class":580,"line":682},[578,809,628],{"class":584},[578,811,812],{"class":644}," function",[578,814,815],{"class":634}," LogProvider",[578,817,818],{"class":588},"({",[578,820,822],{"class":821},"sHdIc"," children",[578,824,825],{"class":588}," }:",[578,827,589],{"class":588},[578,829,822],{"class":657},[578,831,666],{"class":588},[578,833,835],{"class":834},"sBMFI"," React",[578,837,693],{"class":588},[578,839,840],{"class":834},"ReactNode",[578,842,843],{"class":588}," })",[578,845,648],{"class":588},[578,847,848,851,853,855,857],{"class":580,"line":687},[578,849,850],{"class":634},"  useEffect",[578,852,638],{"class":657},[578,854,641],{"class":588},[578,856,645],{"class":644},[578,858,648],{"class":588},[578,860,861,864,866,868,870,872,874,876,878,880],{"class":580,"line":739},[578,862,863],{"class":634},"    initLog",[578,865,638],{"class":657},[578,867,660],{"class":588},[578,869,663],{"class":657},[578,871,666],{"class":588},[578,873,608],{"class":588},[578,875,671],{"class":611},[578,877,674],{"class":588},[578,879,602],{"class":588},[578,881,679],{"class":657},[578,883,885,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924],{"class":580,"line":884},8,[578,886,887],{"class":592},"    log",[578,889,693],{"class":588},[578,891,696],{"class":634},[578,893,638],{"class":657},[578,895,660],{"class":588},[578,897,703],{"class":657},[578,899,666],{"class":588},[578,901,608],{"class":588},[578,903,710],{"class":611},[578,905,674],{"class":588},[578,907,596],{"class":588},[578,909,717],{"class":657},[578,911,666],{"class":588},[578,913,722],{"class":592},[578,915,693],{"class":588},[578,917,727],{"class":592},[578,919,693],{"class":588},[578,921,732],{"class":592},[578,923,602],{"class":588},[578,925,679],{"class":657},[578,927,929,932],{"class":580,"line":928},9,[578,930,931],{"class":588},"  },",[578,933,934],{"class":657}," [])\n",[578,936,938],{"class":580,"line":937},10,[578,939,622],{"emptyLinePlaceholder":621},[578,941,943,946,949,951,954],{"class":580,"line":942},11,[578,944,945],{"class":584},"  return",[578,947,948],{"class":657}," \u003C>",[578,950,660],{"class":588},[578,952,953],{"class":592},"children",[578,955,956],{"class":588},"}\u003C\u002F>\n",[578,958,960],{"class":580,"line":959},12,[578,961,962],{"class":588},"}\n",[567,964,967],{"className":569,"code":965,"filename":966,"language":572,"meta":573,"style":573},"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)",[575,968,969,991,995,1018],{"__ignoreMap":573},[578,970,971,973,975,977,979,981,983,985,987,989],{"class":580,"line":581},[578,972,585],{"class":584},[578,974,589],{"class":588},[578,976,593],{"class":592},[578,978,596],{"class":588},[578,980,599],{"class":592},[578,982,602],{"class":588},[578,984,605],{"class":584},[578,986,608],{"class":588},[578,988,612],{"class":611},[578,990,615],{"class":588},[578,992,993],{"class":580,"line":618},[578,994,622],{"emptyLinePlaceholder":621},[578,996,997,1000,1002,1004,1006,1008,1010,1012,1014,1016],{"class":580,"line":625},[578,998,999],{"class":634},"initLog",[578,1001,638],{"class":592},[578,1003,660],{"class":588},[578,1005,663],{"class":657},[578,1007,666],{"class":588},[578,1009,608],{"class":588},[578,1011,671],{"class":611},[578,1013,674],{"class":588},[578,1015,602],{"class":588},[578,1017,679],{"class":592},[578,1019,1020,1023,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1058,1060],{"class":580,"line":651},[578,1021,1022],{"class":592},"log",[578,1024,693],{"class":588},[578,1026,696],{"class":634},[578,1028,638],{"class":592},[578,1030,660],{"class":588},[578,1032,703],{"class":657},[578,1034,666],{"class":588},[578,1036,608],{"class":588},[578,1038,710],{"class":611},[578,1040,674],{"class":588},[578,1042,596],{"class":588},[578,1044,717],{"class":657},[578,1046,666],{"class":588},[578,1048,722],{"class":592},[578,1050,693],{"class":588},[578,1052,727],{"class":592},[578,1054,693],{"class":588},[578,1056,1057],{"class":592},"pathname ",[578,1059,742],{"class":588},[578,1061,679],{"class":592},[506,1063,1064,1065,1067],{},"The ",[575,1066,1022],{}," object works anywhere in your client code: components, composables, event handlers.",[557,1069,1071,1072,1075],{"id":1070},"minimum-level-minlevel","Minimum level (",[575,1073,1074],{},"minLevel",")",[506,1077,1078,1079,1082,1083,1086,1087,1086,1089,1086,1092,1095,1096,1099],{},"Use ",[575,1080,1081],{},"initLog({ minLevel: 'warn' })"," to keep the browser console quiet (warnings and errors only). Severity order: ",[575,1084,1085],{},"debug"," \u003C ",[575,1088,696],{},[575,1090,1091],{},"warn",[575,1093,1094],{},"error",". Default is ",[575,1097,1098],{},"'debug'"," (all levels).",[506,1101,1102,1103,1107,1108,1111,1112,1115,1116,1118],{},"For a ",[1104,1105,1106],"strong",{},"debug toggle"," without reloading, call ",[575,1109,1110],{},"setMinLevel('debug')"," or ",[575,1113,1114],{},"setMinLevel('warn')"," from ",[575,1117,612],{}," when the user opts in or out of verbose logs.",[506,1120,1121,1123,1124,1128],{},[575,1122,1074],{}," applies to both console output and ",[546,1125,1127],{"href":1126},"#sending-logs-to-the-server","server transport"," payloads.",[557,1130,1132],{"id":1131},"two-call-signatures","Two Call Signatures",[506,1134,1064,1135,1137],{},[575,1136,1022],{}," API accepts two forms depending on the context.",[1139,1140,1142],"h3",{"id":1141},"object-form-structured-context","Object Form (structured context)",[506,1144,1145,1146,666],{},"Pass an object to capture structured data, just like server-side ",[575,1147,1148],{},"log.set()",[567,1150,1153],{"className":569,"code":1151,"filename":1152,"language":572,"meta":573,"style":573},"log.info({ action: 'page_view', path: '\u002Fproducts', referrer: document.referrer })\n","pages\u002Fproducts.vue",[575,1154,1155],{"__ignoreMap":573},[578,1156,1157,1159,1161,1163,1165,1167,1169,1171,1173,1176,1178,1180,1182,1184,1186,1189,1191,1193,1196,1198,1201,1203,1206,1208],{"class":580,"line":581},[578,1158,1022],{"class":592},[578,1160,693],{"class":588},[578,1162,696],{"class":634},[578,1164,638],{"class":592},[578,1166,660],{"class":588},[578,1168,703],{"class":657},[578,1170,666],{"class":588},[578,1172,608],{"class":588},[578,1174,1175],{"class":611},"page_view",[578,1177,674],{"class":588},[578,1179,596],{"class":588},[578,1181,717],{"class":657},[578,1183,666],{"class":588},[578,1185,608],{"class":588},[578,1187,1188],{"class":611},"\u002Fproducts",[578,1190,674],{"class":588},[578,1192,596],{"class":588},[578,1194,1195],{"class":657}," referrer",[578,1197,666],{"class":588},[578,1199,1200],{"class":592}," document",[578,1202,693],{"class":588},[578,1204,1205],{"class":592},"referrer ",[578,1207,742],{"class":588},[578,1209,679],{"class":592},[567,1211,1216],{"className":1212,"code":1213,"filename":1214,"language":1215,"meta":573,"style":573},"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",[575,1217,1218],{"__ignoreMap":573},[578,1219,1220,1223,1225,1228,1231,1233,1236,1238,1240,1242,1244,1247,1249,1251,1253,1255,1258,1260,1263,1265],{"class":580,"line":581},[578,1221,1222],{"class":588},"[",[578,1224,671],{"class":592},[578,1226,1227],{"class":588},"]",[578,1229,1230],{"class":592}," info  ",[578,1232,660],{"class":588},[578,1234,1235],{"class":834}," action:",[578,1237,608],{"class":588},[578,1239,1175],{"class":611},[578,1241,674],{"class":588},[578,1243,596],{"class":611},[578,1245,1246],{"class":611}," path:",[578,1248,608],{"class":588},[578,1250,1188],{"class":611},[578,1252,674],{"class":588},[578,1254,596],{"class":611},[578,1256,1257],{"class":611}," referrer:",[578,1259,608],{"class":588},[578,1261,1262],{"class":611},"https:\u002F\u002Fgoogle.com",[578,1264,674],{"class":588},[578,1266,1267],{"class":611}," }\n",[1139,1269,1271],{"id":1270},"tag-message-form-quick-logs","Tag + Message Form (quick logs)",[506,1273,1274],{},"Pass a tag and a message for quick, readable logs:",[567,1276,1279],{"className":569,"code":1277,"filename":1278,"language":572,"meta":573,"style":573},"log.info('auth', 'User logged in')\n","composables\u002FuseAuth.ts",[575,1280,1281],{"__ignoreMap":573},[578,1282,1283,1285,1287,1289,1291,1293,1296,1298,1300,1302,1305,1307],{"class":580,"line":581},[578,1284,1022],{"class":592},[578,1286,693],{"class":588},[578,1288,696],{"class":634},[578,1290,638],{"class":592},[578,1292,674],{"class":588},[578,1294,1295],{"class":611},"auth",[578,1297,674],{"class":588},[578,1299,596],{"class":588},[578,1301,608],{"class":588},[578,1303,1304],{"class":611},"User logged in",[578,1306,674],{"class":588},[578,1308,679],{"class":592},[567,1310,1312],{"className":1212,"code":1311,"filename":1214,"language":1215,"meta":573,"style":573},"[auth] User logged in\n",[575,1313,1314],{"__ignoreMap":573},[578,1315,1316,1318,1320,1322],{"class":580,"line":581},[578,1317,1222],{"class":588},[578,1319,1295],{"class":592},[578,1321,1227],{"class":588},[578,1323,1324],{"class":592}," User logged in\n",[1139,1326,1328],{"id":1327},"available-levels","Available Levels",[506,1330,1331,1332,1335,1336,1335,1339,1342,1343,693],{},"Both forms support four levels: ",[575,1333,1334],{},"log.info()",", ",[575,1337,1338],{},"log.warn()",[575,1340,1341],{},"log.error()",", and ",[575,1344,1345],{},"log.debug()",[506,1347,1348,1349,1351,1352,1355,1356,1359,1360,1363,1364,693],{},"In the browser, ",[575,1350,1345],{}," is emitted with ",[575,1353,1354],{},"console.log"," (not ",[575,1357,1358],{},"console.debug",") so lines stay visible with the default DevTools ",[1104,1361,1362],{},"Info"," filter; the structured event still has ",[575,1365,1366],{},"level: 'debug'",[557,1368,1370],{"id":1369},"identity-context","Identity Context",[506,1372,1373,1374,666],{},"Track which user generated a log with ",[575,1375,1376],{},"setIdentity()",[567,1378,1380],{"className":569,"code":1379,"filename":1278,"language":572,"meta":573,"style":573},"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",[575,1381,1382,1410,1414,1420,1459,1463,1490,1495,1499,1504],{"__ignoreMap":573},[578,1383,1384,1386,1388,1391,1393,1396,1398,1400,1402,1404,1406,1408],{"class":580,"line":581},[578,1385,585],{"class":584},[578,1387,589],{"class":588},[578,1389,1390],{"class":592}," setIdentity",[578,1392,596],{"class":588},[578,1394,1395],{"class":592}," clearIdentity",[578,1397,596],{"class":588},[578,1399,599],{"class":592},[578,1401,602],{"class":588},[578,1403,605],{"class":584},[578,1405,608],{"class":588},[578,1407,612],{"class":611},[578,1409,615],{"class":588},[578,1411,1412],{"class":580,"line":618},[578,1413,622],{"emptyLinePlaceholder":621},[578,1415,1416],{"class":580,"line":625},[578,1417,1419],{"class":1418},"sHwdD","\u002F\u002F After login\n",[578,1421,1422,1425,1427,1429,1432,1434,1436,1439,1441,1443,1446,1448,1450,1453,1455,1457],{"class":580,"line":651},[578,1423,1424],{"class":634},"setIdentity",[578,1426,638],{"class":592},[578,1428,660],{"class":588},[578,1430,1431],{"class":657}," userId",[578,1433,666],{"class":588},[578,1435,608],{"class":588},[578,1437,1438],{"class":611},"usr_123",[578,1440,674],{"class":588},[578,1442,596],{"class":588},[578,1444,1445],{"class":657}," plan",[578,1447,666],{"class":588},[578,1449,608],{"class":588},[578,1451,1452],{"class":611},"pro",[578,1454,674],{"class":588},[578,1456,602],{"class":588},[578,1458,679],{"class":592},[578,1460,1461],{"class":580,"line":682},[578,1462,622],{"emptyLinePlaceholder":621},[578,1464,1465,1467,1469,1471,1473,1475,1477,1479,1481,1484,1486,1488],{"class":580,"line":687},[578,1466,1022],{"class":592},[578,1468,693],{"class":588},[578,1470,696],{"class":634},[578,1472,638],{"class":592},[578,1474,660],{"class":588},[578,1476,703],{"class":657},[578,1478,666],{"class":588},[578,1480,608],{"class":588},[578,1482,1483],{"class":611},"dashboard_view",[578,1485,674],{"class":588},[578,1487,602],{"class":588},[578,1489,679],{"class":592},[578,1491,1492],{"class":580,"line":739},[578,1493,1494],{"class":1418},"\u002F\u002F → { userId: 'usr_123', plan: 'pro', action: 'dashboard_view', ... }\n",[578,1496,1497],{"class":580,"line":884},[578,1498,622],{"emptyLinePlaceholder":621},[578,1500,1501],{"class":580,"line":928},[578,1502,1503],{"class":1418},"\u002F\u002F After logout\n",[578,1505,1506,1509],{"class":580,"line":937},[578,1507,1508],{"class":634},"clearIdentity",[578,1510,1511],{"class":592},"()\n",[506,1513,1514],{},"Identity fields are automatically merged into every log event until cleared. This lets you correlate browser events to specific users in your observability tools.",[557,1516,475],{"id":1517},"configuration",[506,1519,1520,1523],{},[575,1521,1522],{},"initLog()"," accepts the following options:",[1525,1526,1527,1543],"table",{},[1528,1529,1530],"thead",{},[1531,1532,1533,1537,1540],"tr",{},[1534,1535,1536],"th",{},"Option",[1534,1538,1539],{},"Default",[1534,1541,1542],{},"Description",[1544,1545,1546,1562,1576,1590,1611,1626],"tbody",{},[1531,1547,1548,1554,1559],{},[1549,1550,1551],"td",{},[575,1552,1553],{},"enabled",[1549,1555,1556],{},[575,1557,1558],{},"true",[1549,1560,1561],{},"Enable or disable all client logging",[1531,1563,1564,1569,1573],{},[1549,1565,1566],{},[575,1567,1568],{},"console",[1549,1570,1571],{},[575,1572,1558],{},[1549,1574,1575],{},"Output logs to the browser console",[1531,1577,1578,1583,1587],{},[1549,1579,1580],{},[575,1581,1582],{},"pretty",[1549,1584,1585],{},[575,1586,1558],{},[1549,1588,1589],{},"Use colored, formatted console output",[1531,1591,1592,1596,1600],{},[1549,1593,1594],{},[575,1595,1074],{},[1549,1597,1598],{},[575,1599,1098],{},[1549,1601,1602,1603,1086,1605,1086,1607,1086,1609],{},"Minimum severity: ",[575,1604,1085],{},[575,1606,696],{},[575,1608,1091],{},[575,1610,1094],{},[1531,1612,1613,1618,1623],{},[1549,1614,1615],{},[575,1616,1617],{},"service",[1549,1619,1620],{},[575,1621,1622],{},"'client'",[1549,1624,1625],{},"Service name included in every log event",[1531,1627,1628,1633,1636],{},[1549,1629,1630],{},[575,1631,1632],{},"transport",[1549,1634,1635],{},"-",[1549,1637,1638],{},"Send logs to a server endpoint (see below)",[567,1640,1643],{"className":569,"code":1641,"filename":1642,"language":572,"meta":573,"style":573},"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",[575,1644,1645,1654,1670,1679,1692,1711,1716],{"__ignoreMap":573},[578,1646,1647,1649,1651],{"class":580,"line":581},[578,1648,999],{"class":634},[578,1650,638],{"class":592},[578,1652,1653],{"class":588},"{\n",[578,1655,1656,1659,1661,1663,1665,1667],{"class":580,"line":618},[578,1657,1658],{"class":657},"  service",[578,1660,666],{"class":588},[578,1662,608],{"class":588},[578,1664,671],{"class":611},[578,1666,674],{"class":588},[578,1668,1669],{"class":588},",\n",[578,1671,1672,1675,1677],{"class":580,"line":625},[578,1673,1674],{"class":657},"  transport",[578,1676,666],{"class":588},[578,1678,648],{"class":588},[578,1680,1681,1684,1686,1690],{"class":580,"line":651},[578,1682,1683],{"class":657},"    enabled",[578,1685,666],{"class":588},[578,1687,1689],{"class":1688},"sfNiH"," true",[578,1691,1669],{"class":588},[578,1693,1694,1697,1699,1701,1704,1706,1708],{"class":580,"line":682},[578,1695,1696],{"class":657},"    endpoint",[578,1698,666],{"class":588},[578,1700,608],{"class":588},[578,1702,1703],{"class":611},"\u002Fapi\u002F_evlog\u002Fingest",[578,1705,674],{"class":588},[578,1707,596],{"class":588},[578,1709,1710],{"class":1418}," \u002F\u002F default endpoint\n",[578,1712,1713],{"class":580,"line":687},[578,1714,1715],{"class":588},"  },\n",[578,1717,1718,1720],{"class":580,"line":739},[578,1719,742],{"class":588},[578,1721,679],{"class":592},[1723,1724,1725,1335,1727,1342,1729,1731,1732,1734],"callout",{"color":696,"icon":13},[575,1726,1553],{},[575,1728,1568],{},[575,1730,1582],{}," all default to ",[575,1733,1558],{},". You only need to set them if you want to change the defaults.",[557,1736,1738],{"id":1737},"sending-logs-to-the-server","Sending Logs to the Server",[506,1740,1741],{},"By default, client logs only appear in the browser console. To persist them, you have two options:",[1139,1743,1745],{"id":1744},"built-in-transport","Built-in Transport",[506,1747,1748,1749,1751,1752,1755,1756,1759],{},"The simplest approach is to enable the built-in transport in ",[575,1750,1522],{},". Each log is sent individually via ",[575,1753,1754],{},"fetch"," with ",[575,1757,1758],{},"keepalive: true",". Good for low-volume apps.",[564,1761,1762,1881,2081],{},[567,1763,1765],{"className":569,"code":1764,"filename":571,"language":572,"meta":573,"style":573},"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",[575,1766,1767,1785,1789,1805,1813,1828,1837,1848,1863,1868,1875],{"__ignoreMap":573},[578,1768,1769,1771,1773,1775,1777,1779,1781,1783],{"class":580,"line":581},[578,1770,585],{"class":584},[578,1772,589],{"class":588},[578,1774,593],{"class":592},[578,1776,602],{"class":588},[578,1778,605],{"class":584},[578,1780,608],{"class":588},[578,1782,612],{"class":611},[578,1784,615],{"class":588},[578,1786,1787],{"class":580,"line":618},[578,1788,622],{"emptyLinePlaceholder":621},[578,1790,1791,1793,1795,1797,1799,1801,1803],{"class":580,"line":625},[578,1792,628],{"class":584},[578,1794,631],{"class":584},[578,1796,635],{"class":634},[578,1798,638],{"class":592},[578,1800,641],{"class":588},[578,1802,645],{"class":644},[578,1804,648],{"class":588},[578,1806,1807,1809,1811],{"class":580,"line":651},[578,1808,654],{"class":634},[578,1810,638],{"class":657},[578,1812,1653],{"class":588},[578,1814,1815,1818,1820,1822,1824,1826],{"class":580,"line":682},[578,1816,1817],{"class":657},"    service",[578,1819,666],{"class":588},[578,1821,608],{"class":588},[578,1823,671],{"class":611},[578,1825,674],{"class":588},[578,1827,1669],{"class":588},[578,1829,1830,1833,1835],{"class":580,"line":687},[578,1831,1832],{"class":657},"    transport",[578,1834,666],{"class":588},[578,1836,648],{"class":588},[578,1838,1839,1842,1844,1846],{"class":580,"line":739},[578,1840,1841],{"class":657},"      enabled",[578,1843,666],{"class":588},[578,1845,1689],{"class":1688},[578,1847,1669],{"class":588},[578,1849,1850,1853,1855,1857,1859,1861],{"class":580,"line":884},[578,1851,1852],{"class":657},"      endpoint",[578,1854,666],{"class":588},[578,1856,608],{"class":588},[578,1858,1703],{"class":611},[578,1860,674],{"class":588},[578,1862,1669],{"class":588},[578,1864,1865],{"class":580,"line":928},[578,1866,1867],{"class":588},"    },\n",[578,1869,1870,1873],{"class":580,"line":937},[578,1871,1872],{"class":588},"  }",[578,1874,679],{"class":657},[578,1876,1877,1879],{"class":580,"line":942},[578,1878,742],{"class":588},[578,1880,679],{"class":592},[567,1882,1887],{"className":1883,"code":1884,"filename":1885,"language":1886,"meta":573,"style":573},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { EvlogProvider } from 'evlog\u002Fnext\u002Fclient'\n\nexport default function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml lang=\"en\">\n      \u003Cbody>\n        \u003CEvlogProvider service=\"web\" transport={{ enabled: true, endpoint: '\u002Fapi\u002F_evlog\u002Fingest' }}>\n          {children}\n        \u003C\u002FEvlogProvider>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n","app\u002Flayout.tsx (Next.js)","tsx",[575,1888,1889,1909,1913,1946,1953,1978,1988,2035,2044,2053,2062,2071,2076],{"__ignoreMap":573},[578,1890,1891,1893,1895,1898,1900,1902,1904,1907],{"class":580,"line":581},[578,1892,585],{"class":584},[578,1894,589],{"class":588},[578,1896,1897],{"class":592}," EvlogProvider",[578,1899,602],{"class":588},[578,1901,605],{"class":584},[578,1903,608],{"class":588},[578,1905,1906],{"class":611},"evlog\u002Fnext\u002Fclient",[578,1908,615],{"class":588},[578,1910,1911],{"class":580,"line":618},[578,1912,622],{"emptyLinePlaceholder":621},[578,1914,1915,1917,1919,1921,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944],{"class":580,"line":625},[578,1916,628],{"class":584},[578,1918,631],{"class":584},[578,1920,812],{"class":644},[578,1922,1923],{"class":634}," Layout",[578,1925,818],{"class":588},[578,1927,822],{"class":821},[578,1929,825],{"class":588},[578,1931,589],{"class":588},[578,1933,822],{"class":657},[578,1935,666],{"class":588},[578,1937,835],{"class":834},[578,1939,693],{"class":588},[578,1941,840],{"class":834},[578,1943,843],{"class":588},[578,1945,648],{"class":588},[578,1947,1948,1950],{"class":580,"line":651},[578,1949,945],{"class":584},[578,1951,1952],{"class":657}," (\n",[578,1954,1955,1958,1961,1964,1967,1970,1973,1975],{"class":580,"line":682},[578,1956,1957],{"class":588},"    \u003C",[578,1959,1960],{"class":657},"html",[578,1962,1963],{"class":644}," lang",[578,1965,1966],{"class":588},"=",[578,1968,1969],{"class":588},"\"",[578,1971,1972],{"class":611},"en",[578,1974,1969],{"class":588},[578,1976,1977],{"class":588},">\n",[578,1979,1980,1983,1986],{"class":580,"line":687},[578,1981,1982],{"class":588},"      \u003C",[578,1984,1985],{"class":657},"body",[578,1987,1977],{"class":588},[578,1989,1990,1993,1996,1998,2000,2002,2004,2006,2009,2012,2015,2017,2019,2021,2024,2026,2028,2030,2032],{"class":580,"line":739},[578,1991,1992],{"class":588},"        \u003C",[578,1994,1995],{"class":834},"EvlogProvider",[578,1997,663],{"class":644},[578,1999,1966],{"class":588},[578,2001,1969],{"class":588},[578,2003,671],{"class":611},[578,2005,1969],{"class":588},[578,2007,2008],{"class":644}," transport",[578,2010,2011],{"class":588},"={{",[578,2013,2014],{"class":657}," enabled",[578,2016,666],{"class":588},[578,2018,1689],{"class":1688},[578,2020,596],{"class":588},[578,2022,2023],{"class":657}," endpoint",[578,2025,666],{"class":588},[578,2027,608],{"class":588},[578,2029,1703],{"class":611},[578,2031,674],{"class":588},[578,2033,2034],{"class":588}," }}>\n",[578,2036,2037,2040,2042],{"class":580,"line":884},[578,2038,2039],{"class":588},"          {",[578,2041,953],{"class":592},[578,2043,962],{"class":588},[578,2045,2046,2049,2051],{"class":580,"line":928},[578,2047,2048],{"class":588},"        \u003C\u002F",[578,2050,1995],{"class":834},[578,2052,1977],{"class":588},[578,2054,2055,2058,2060],{"class":580,"line":937},[578,2056,2057],{"class":588},"      \u003C\u002F",[578,2059,1985],{"class":657},[578,2061,1977],{"class":588},[578,2063,2064,2067,2069],{"class":580,"line":942},[578,2065,2066],{"class":588},"    \u003C\u002F",[578,2068,1960],{"class":657},[578,2070,1977],{"class":588},[578,2072,2073],{"class":580,"line":959},[578,2074,2075],{"class":657},"  )\n",[578,2077,2079],{"class":580,"line":2078},13,[578,2080,962],{"class":588},[567,2082,2084],{"className":569,"code":2083,"filename":966,"language":572,"meta":573,"style":573},"import { initLog } from 'evlog\u002Fclient'\n\ninitLog({\n  service: 'web',\n  transport: {\n    enabled: true,\n    endpoint: '\u002Fapi\u002F_evlog\u002Fingest',\n  },\n})\n",[575,2085,2086,2104,2108,2116,2130,2138,2148,2162,2166],{"__ignoreMap":573},[578,2087,2088,2090,2092,2094,2096,2098,2100,2102],{"class":580,"line":581},[578,2089,585],{"class":584},[578,2091,589],{"class":588},[578,2093,593],{"class":592},[578,2095,602],{"class":588},[578,2097,605],{"class":584},[578,2099,608],{"class":588},[578,2101,612],{"class":611},[578,2103,615],{"class":588},[578,2105,2106],{"class":580,"line":618},[578,2107,622],{"emptyLinePlaceholder":621},[578,2109,2110,2112,2114],{"class":580,"line":625},[578,2111,999],{"class":634},[578,2113,638],{"class":592},[578,2115,1653],{"class":588},[578,2117,2118,2120,2122,2124,2126,2128],{"class":580,"line":651},[578,2119,1658],{"class":657},[578,2121,666],{"class":588},[578,2123,608],{"class":588},[578,2125,671],{"class":611},[578,2127,674],{"class":588},[578,2129,1669],{"class":588},[578,2131,2132,2134,2136],{"class":580,"line":682},[578,2133,1674],{"class":657},[578,2135,666],{"class":588},[578,2137,648],{"class":588},[578,2139,2140,2142,2144,2146],{"class":580,"line":687},[578,2141,1683],{"class":657},[578,2143,666],{"class":588},[578,2145,1689],{"class":1688},[578,2147,1669],{"class":588},[578,2149,2150,2152,2154,2156,2158,2160],{"class":580,"line":739},[578,2151,1696],{"class":657},[578,2153,666],{"class":588},[578,2155,608],{"class":588},[578,2157,1703],{"class":611},[578,2159,674],{"class":588},[578,2161,1669],{"class":588},[578,2163,2164],{"class":580,"line":884},[578,2165,1715],{"class":588},[578,2167,2168,2170],{"class":580,"line":928},[578,2169,742],{"class":588},[578,2171,679],{"class":592},[1723,2173,2174,2175,2179],{"color":696,"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 ",[546,2176,2178],{"href":2177},"\u002Fextend\u002Fdrain-pipeline#server-endpoint","HTTP drain"," docs for Express and Hono examples.",[1139,2181,2183],{"id":2182},"http-drain-pipeline","HTTP drain pipeline",[506,2185,2186,2187,2190],{},"For higher volume or when you need batching, retries, and page-exit flushing, use the HTTP drain (",[575,2188,2189],{},"evlog\u002Fhttp","). This works with any frontend and has no framework dependency.",[564,2192,2193,2421],{},[567,2194,2196],{"className":569,"code":2195,"filename":571,"language":572,"meta":573,"style":573},"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",[575,2197,2198,2222,2241,2245,2261,2278,2300,2309,2339,2358,2362,2368,2372,2387,2414],{"__ignoreMap":573},[578,2199,2200,2202,2204,2207,2209,2211,2213,2215,2217,2220],{"class":580,"line":581},[578,2201,585],{"class":584},[578,2203,589],{"class":588},[578,2205,2206],{"class":592}," initLogger",[578,2208,596],{"class":588},[578,2210,599],{"class":592},[578,2212,602],{"class":588},[578,2214,605],{"class":584},[578,2216,608],{"class":588},[578,2218,2219],{"class":611},"evlog",[578,2221,615],{"class":588},[578,2223,2224,2226,2228,2231,2233,2235,2237,2239],{"class":580,"line":618},[578,2225,585],{"class":584},[578,2227,589],{"class":588},[578,2229,2230],{"class":592}," createHttpLogDrain",[578,2232,602],{"class":588},[578,2234,605],{"class":584},[578,2236,608],{"class":588},[578,2238,2189],{"class":611},[578,2240,615],{"class":588},[578,2242,2243],{"class":580,"line":625},[578,2244,622],{"emptyLinePlaceholder":621},[578,2246,2247,2249,2251,2253,2255,2257,2259],{"class":580,"line":651},[578,2248,628],{"class":584},[578,2250,631],{"class":584},[578,2252,635],{"class":634},[578,2254,638],{"class":592},[578,2256,641],{"class":588},[578,2258,645],{"class":644},[578,2260,648],{"class":588},[578,2262,2263,2266,2269,2272,2274,2276],{"class":580,"line":682},[578,2264,2265],{"class":644},"  const",[578,2267,2268],{"class":592}," drain",[578,2270,2271],{"class":588}," =",[578,2273,2230],{"class":634},[578,2275,638],{"class":657},[578,2277,1653],{"class":588},[578,2279,2280,2283,2285,2287,2289,2291,2293,2295,2297],{"class":580,"line":687},[578,2281,2282],{"class":657},"    drain",[578,2284,666],{"class":588},[578,2286,589],{"class":588},[578,2288,2023],{"class":657},[578,2290,666],{"class":588},[578,2292,608],{"class":588},[578,2294,1703],{"class":611},[578,2296,674],{"class":588},[578,2298,2299],{"class":588}," },\n",[578,2301,2302,2305,2307],{"class":580,"line":739},[578,2303,2304],{"class":657},"    pipeline",[578,2306,666],{"class":588},[578,2308,648],{"class":588},[578,2310,2311,2314,2316,2318,2321,2323,2327,2329,2332,2334,2337],{"class":580,"line":884},[578,2312,2313],{"class":657},"      batch",[578,2315,666],{"class":588},[578,2317,589],{"class":588},[578,2319,2320],{"class":657}," size",[578,2322,666],{"class":588},[578,2324,2326],{"class":2325},"sbssI"," 25",[578,2328,596],{"class":588},[578,2330,2331],{"class":657}," intervalMs",[578,2333,666],{"class":588},[578,2335,2336],{"class":2325}," 2000",[578,2338,2299],{"class":588},[578,2340,2341,2344,2346,2348,2351,2353,2356],{"class":580,"line":928},[578,2342,2343],{"class":657},"      retry",[578,2345,666],{"class":588},[578,2347,589],{"class":588},[578,2349,2350],{"class":657}," maxAttempts",[578,2352,666],{"class":588},[578,2354,2355],{"class":2325}," 2",[578,2357,2299],{"class":588},[578,2359,2360],{"class":580,"line":937},[578,2361,1867],{"class":588},[578,2363,2364,2366],{"class":580,"line":942},[578,2365,1872],{"class":588},[578,2367,679],{"class":657},[578,2369,2370],{"class":580,"line":959},[578,2371,622],{"emptyLinePlaceholder":621},[578,2373,2374,2377,2379,2381,2383,2385],{"class":580,"line":2078},[578,2375,2376],{"class":634},"  initLogger",[578,2378,638],{"class":657},[578,2380,660],{"class":588},[578,2382,2268],{"class":592},[578,2384,602],{"class":588},[578,2386,679],{"class":657},[578,2388,2390,2392,2394,2396,2398,2400,2402,2404,2406,2408,2410,2412],{"class":580,"line":2389},14,[578,2391,690],{"class":592},[578,2393,693],{"class":588},[578,2395,696],{"class":634},[578,2397,638],{"class":657},[578,2399,660],{"class":588},[578,2401,703],{"class":657},[578,2403,666],{"class":588},[578,2405,608],{"class":588},[578,2407,710],{"class":611},[578,2409,674],{"class":588},[578,2411,602],{"class":588},[578,2413,679],{"class":657},[578,2415,2417,2419],{"class":580,"line":2416},15,[578,2418,742],{"class":588},[578,2420,679],{"class":592},[567,2422,2424],{"className":569,"code":2423,"filename":966,"language":572,"meta":573,"style":573},"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",[575,2425,2426,2448,2466,2470,2486,2508,2517,2542,2559,2563,2569,2573,2588],{"__ignoreMap":573},[578,2427,2428,2430,2432,2434,2436,2438,2440,2442,2444,2446],{"class":580,"line":581},[578,2429,585],{"class":584},[578,2431,589],{"class":588},[578,2433,2206],{"class":592},[578,2435,596],{"class":588},[578,2437,599],{"class":592},[578,2439,602],{"class":588},[578,2441,605],{"class":584},[578,2443,608],{"class":588},[578,2445,2219],{"class":611},[578,2447,615],{"class":588},[578,2449,2450,2452,2454,2456,2458,2460,2462,2464],{"class":580,"line":618},[578,2451,585],{"class":584},[578,2453,589],{"class":588},[578,2455,2230],{"class":592},[578,2457,602],{"class":588},[578,2459,605],{"class":584},[578,2461,608],{"class":588},[578,2463,2189],{"class":611},[578,2465,615],{"class":588},[578,2467,2468],{"class":580,"line":625},[578,2469,622],{"emptyLinePlaceholder":621},[578,2471,2472,2475,2478,2480,2482,2484],{"class":580,"line":651},[578,2473,2474],{"class":644},"const",[578,2476,2477],{"class":592}," drain ",[578,2479,1966],{"class":588},[578,2481,2230],{"class":634},[578,2483,638],{"class":592},[578,2485,1653],{"class":588},[578,2487,2488,2491,2493,2495,2497,2499,2501,2504,2506],{"class":580,"line":682},[578,2489,2490],{"class":657},"  drain",[578,2492,666],{"class":588},[578,2494,589],{"class":588},[578,2496,2023],{"class":657},[578,2498,666],{"class":588},[578,2500,608],{"class":588},[578,2502,2503],{"class":611},"https:\u002F\u002Flogs.example.com\u002Fv1\u002Fingest",[578,2505,674],{"class":588},[578,2507,2299],{"class":588},[578,2509,2510,2513,2515],{"class":580,"line":687},[578,2511,2512],{"class":657},"  pipeline",[578,2514,666],{"class":588},[578,2516,648],{"class":588},[578,2518,2519,2522,2524,2526,2528,2530,2532,2534,2536,2538,2540],{"class":580,"line":739},[578,2520,2521],{"class":657},"    batch",[578,2523,666],{"class":588},[578,2525,589],{"class":588},[578,2527,2320],{"class":657},[578,2529,666],{"class":588},[578,2531,2326],{"class":2325},[578,2533,596],{"class":588},[578,2535,2331],{"class":657},[578,2537,666],{"class":588},[578,2539,2336],{"class":2325},[578,2541,2299],{"class":588},[578,2543,2544,2547,2549,2551,2553,2555,2557],{"class":580,"line":884},[578,2545,2546],{"class":657},"    retry",[578,2548,666],{"class":588},[578,2550,589],{"class":588},[578,2552,2350],{"class":657},[578,2554,666],{"class":588},[578,2556,2355],{"class":2325},[578,2558,2299],{"class":588},[578,2560,2561],{"class":580,"line":928},[578,2562,1715],{"class":588},[578,2564,2565,2567],{"class":580,"line":937},[578,2566,742],{"class":588},[578,2568,679],{"class":592},[578,2570,2571],{"class":580,"line":942},[578,2572,622],{"emptyLinePlaceholder":621},[578,2574,2575,2578,2580,2582,2584,2586],{"class":580,"line":959},[578,2576,2577],{"class":634},"initLogger",[578,2579,638],{"class":592},[578,2581,660],{"class":588},[578,2583,2477],{"class":592},[578,2585,742],{"class":588},[578,2587,679],{"class":592},[578,2589,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612],{"class":580,"line":2078},[578,2591,1022],{"class":592},[578,2593,693],{"class":588},[578,2595,696],{"class":634},[578,2597,638],{"class":592},[578,2599,660],{"class":588},[578,2601,703],{"class":657},[578,2603,666],{"class":588},[578,2605,608],{"class":588},[578,2607,710],{"class":611},[578,2609,674],{"class":588},[578,2611,602],{"class":588},[578,2613,679],{"class":592},[506,2615,2616],{},"The HTTP drain automatically:",[521,2618,2619,2625,2631],{},[524,2620,2621,2624],{},[1104,2622,2623],{},"Batches"," events by size and time interval",[524,2626,2627,2630],{},[1104,2628,2629],{},"Retries"," failed sends with exponential backoff",[524,2632,2633,2636,2637,2640],{},[1104,2634,2635],{},"Flushes"," buffered events via ",[575,2638,2639],{},"sendBeacon"," when the page becomes hidden (tab switch, navigation, close)",[1723,2642,2645,2646,2648],{"color":2643,"icon":2644},"neutral","i-lucide-arrow-right","See the ",[546,2647,2178],{"href":467}," adapter docs for full configuration reference, authentication, and server endpoint examples.",[557,2650,2652],{"id":2651},"next-steps","Next Steps",[521,2654,2655,2660,2666],{},[524,2656,2657,2659],{},[546,2658,2178],{"href":467}," - Batching, retry, and sendBeacon fallback",[524,2661,2662,2665],{},[546,2663,2664],{"href":467},"Pipeline"," - Advanced pipeline configuration",[524,2667,2668,2670],{},[546,2669,51],{"href":52}," - Surface client errors with actionable context",[2672,2673,2674],"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":573,"searchDepth":618,"depth":618,"links":2676},[2677,2678,2680,2685,2686,2687,2691],{"id":559,"depth":618,"text":25},{"id":1070,"depth":618,"text":2679},"Minimum level (minLevel)",{"id":1131,"depth":618,"text":1132,"children":2681},[2682,2683,2684],{"id":1141,"depth":625,"text":1142},{"id":1270,"depth":625,"text":1271},{"id":1327,"depth":625,"text":1328},{"id":1369,"depth":618,"text":1370},{"id":1517,"depth":618,"text":475},{"id":1737,"depth":618,"text":1738,"children":2688},[2689,2690],{"id":1744,"depth":625,"text":1745},{"id":2182,"depth":625,"text":2183},{"id":2651,"depth":618,"text":2652},"Capture browser events with structured logging. Same API as the server, with automatic console styling, user identity context, and optional server transport.","md",[2695,2698],{"label":2178,"icon":2696,"to":467,"color":2643,"variant":2697},"i-lucide-globe","subtle",{"label":46,"icon":49,"to":47,"color":2643,"variant":2697},{},{"icon":295},{"title":292,"description":2692},"soGOEXQ4XAr17_mahnK9aNsCipRA3_XqQHyDWWTVemU",[2704,2706],{"title":36,"path":289,"stem":290,"description":2705,"icon":97,"children":-1},"Recipes that solve a specific problem with evlog — capture browser logs, observe AI SDK calls, identify users from Better Auth, build a tamper-evident audit trail, instrument tool telemetry, enrich every event with derived context.",{"title":36,"path":303,"stem":304,"description":2707,"icon":39,"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 with one line.",1785016732733]