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