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