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