Skip to main content

Logging & Events (SolvixBus)

Solvix provides a powerful event-driven system called SolvixBus.

It allows developers to observe, debug, and integrate deeply with the internal lifecycle of every request.

This is especially useful for:

  • Debugging complex flows
  • Monitoring production systems
  • Building analytics pipelines
  • Integrating with enterprise observability tools

What is SolvixBus?

SolvixBus is a global event emitter that broadcasts lifecycle events for every request.

You can subscribe to these events and perform custom actions.

Basic Usage

import { SolvixBus } from "solvix";

SolvixBus.on((event) => {
console.log(event);
});

Event Structure

Every event follows this structure:

{
type: string;
context: SolvixContext;
timestamp: number;
}

Fields Explained

  • type → event name
  • context → request context (URL, options, meta)
  • timestamp → event time

Core Events (Detailed)


1. request:start

When it fires

Triggered when a request is initiated.

Use cases

  • Logging request start
  • Tracking API usage
  • Debugging request flow

Example

SolvixBus.on((event) => {
if (event.type === "request:start") {
console.log("Request started:", event.context.url);
}
});

2. request:success

When it fires

Triggered when a request completes successfully.

Use cases

  • Success analytics
  • Monitoring API health
  • Metrics tracking

Example

SolvixBus.on((event) => {
if (event.type === "request:success") {
console.log("Success:", event.context.url);
}
});

3. request:error

When it fires

Triggered when a request fails.

Use cases

  • Error logging
  • Alert systems
  • Debugging failures

Example

SolvixBus.on((event) => {
if (event.type === "request:error") {
console.error("Error:", event.context.url);
}
});

4. request:retry

When it fires

Triggered before a retry attempt.

Use cases

  • Detect retry storms
  • Debug unstable APIs
  • Monitor failure patterns

Example

SolvixBus.on((event) => {
if (event.type === "request:retry") {
console.warn("Retrying request:", event.context.url);
}
});

5. request:queue

When it fires

Triggered when a request is added to queue.

Use cases

  • Queue monitoring
  • Backpressure detection
  • Performance analysis

Example

SolvixBus.on((event) => {
if (event.type === "request:queue") {
console.log("Queued:", event.context.url);
}
});

Shadow Mode Events

6. request:shadowStart

When it fires

Triggered when shadow request execution starts.

Use cases

  • A/B testing
  • Backend comparison
  • Migration validation

Example

SolvixBus.on((event) => {
if (event.type === "request:shadowStart") {
console.log("Shadow request started");
}
});

7. request:shadowComplete

When it fires

Triggered when shadow execution completes.

Use cases

  • Compare responses
  • Track shadow performance

Example

SolvixBus.on((event) => {
if (event.type === "request:shadowComplete") {
console.log("Shadow completed");
}
});

8. request:shadowError

When it fires

Triggered when shadow execution fails.

Use cases

  • Debug secondary backend
  • Detect inconsistencies

Example

SolvixBus.on((event) => {
if (event.type === "request:shadowError") {
console.error("Shadow failed");
}
});

Advanced Usage Patterns

1. Global Logger

SolvixBus.on((event) => {
console.log(`[${event.type}]`, event.context.url);
});

2. Error Monitoring System

SolvixBus.on((event) => {
if (event.type === "request:error") {
sendToMonitoring(event);
}
});

3. Performance Tracking

SolvixBus.on((event) => {
if (event.type === "request:success") {
trackPerformance(event.context.meta);
}
});

4. Analytics Pipeline

SolvixBus.on((event) => {
if (event.type === "request:success") {
analytics.track("api_call", {
url: event.context.url,
});
}
});

Enterprise Use Cases

SolvixBus integrates easily with:

  • Datadog
  • New Relic
  • ELK Stack
  • Custom dashboards

Best Practices

  • Avoid heavy logic inside listeners
  • Filter only required events
  • Use batching for logs
  • Do not block event loop

Summary

SolvixBus provides:

  • Real-time observability
  • Deep debugging capabilities
  • Enterprise-grade integrations

It transforms Solvix from just an HTTP client into a fully observable system layer.