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