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