client-side logging