Skip to content

Observability

Zlient is "Enterprise Ready" out of the box with structured logging and metrics collection hooks.

Logging

You can bring your own logger or use the built-in ConsoleLogger.

typescript
import { ConsoleLogger, LogLevel } from 'zlient';

const client = new HttpClient({
  // ...
  logger: new ConsoleLogger(LogLevel.INFO)
});

Custom Logger

Implement the Logger interface to send logs to Datadog, Sentry, or CloudWatch.

typescript
import { Logger, LogEntry } from 'zlient';

class RemoteLogger implements Logger {
  log(entry: LogEntry) {
    // entry contains: output level, message, timestamp, context, error
    myTelemetryService.emit(entry);
  }
}

Metrics

Track latencies, success rates, and status codes.

typescript
import { InMemoryMetricsCollector } from 'zlient';

const metrics = new InMemoryMetricsCollector();
const client = new HttpClient({
  // ...
  metrics
});

// Later...
const stats = metrics.getSummary();
console.log(stats.avgDurationMs);

Custom Collector

Implement MetricsCollector to feed Prometheus or StatsD.

typescript
import { MetricsCollector, RequestMetrics } from 'zlient';

class PrometheusCollector implements MetricsCollector {
  collect(m: RequestMetrics) {
    // m contains: method, path, status, durationMs, success
    histogram.observe(m.durationMs, { path: m.path, status: m.status });
  }
}

Released under the MIT License.