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