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