Sazabi
Log sourcesSend to an endpoint

Sentry SDK

Point your Sentry SDK at a Sazabi DSN to forward errors, structured logs, and envelope telemetry — either replacing your Sentry project DSN or sending to both.

About

Forward errors, exceptions, structured logs, and other envelope telemetry from any Sentry SDK into Sazabi. Point your Sentry SDK at a Sazabi DSN — either replacing your Sentry project DSN to send events only to Sazabi, or using the SDK's built-in multiplexed transport to send to both Sazabi and your existing Sentry project so its dashboards and alerting stay intact.

Sentry also has a platform integration path that streams Sentry issue, comment, and alert events through a Sentry Internal Integration webhook. See Sentry page for that setup. The connect-your-account path at /catalogs/log-sources/connect-your-account/sentry sets up that same platform integration automatically.

Prerequisites

  • A Sentry SDK already initialized in your application.
  • Your Sazabi DSN: https://sazabi@your-intake-host/0 (your intake URL is shown above — replace your-intake-host with the hostname).

Set up in the dashboard

Choose JavaScript/Node.js or Python

JavaScript / Node.js: Send only to Sazabi

Replace your Sentry project DSN with the Sazabi DSN. Your existing Sentry project no longer receives these events.

import * as Sentry from "@sentry/node";

Sentry.init({
  dsn: "https://sazabi@your-intake-host/0",
  enableLogs: true,
});

JavaScript / Node.js: Multiplex (send to both)

Keep your existing Sentry project receiving events and also stream to Sazabi via the SDK's built-in makeMultiplexedTransport.

import * as Sentry from "@sentry/node";
import { makeMultiplexedTransport } from "@sentry/core";

const SENTRY_DSN = "<your-existing-sentry-dsn>";
const SAZABI_DSN = "https://sazabi@your-intake-host/0";

Sentry.init({
  // Primary DSN keeps your Sentry project (and its alerting) working.
  dsn: SENTRY_DSN,
  enableLogs: true,
  transport: makeMultiplexedTransport(
    Sentry.makeNodeTransport,
    // Fan every event out to both destinations.
    () => [{ dsn: SENTRY_DSN }, { dsn: SAZABI_DSN }],
  ),
});

In the browser, import makeFetchTransport from @sentry/browser and pass it in place of Sentry.makeNodeTransport.

Python: Send only to Sazabi

import sentry_sdk

sentry_sdk.init(
    dsn="https://sazabi@your-intake-host/0",
    enable_logs=True,
)

Python: Multiplex (send to both)

The Python SDK has no built-in multiplexed transport. Use a second Client plus a before_send hook to forward a copy of each event to Sazabi; returning event keeps your primary Sentry project receiving it.

import sentry_sdk
from sentry_sdk import Client

SENTRY_DSN = "<your-existing-sentry-dsn>"
SAZABI_DSN = "https://sazabi@your-intake-host/0"

# Secondary client streams a copy of every event to Sazabi.
_sazabi = Client(dsn=SAZABI_DSN)

def _forward_to_sazabi(event, hint):
    _sazabi.capture_event(event, hint=hint)
    return event  # keep sending to your primary Sentry project

# Primary init keeps your Sentry project (and its alerting) working.
sentry_sdk.init(
    dsn=SENTRY_DSN,
    enable_logs=True,
    before_send=_forward_to_sazabi,
)

The Python before_send hook forwards error events only — structured logs stay on your primary Sentry project on this path. Verify Sazabi delivery with a test exception.

The Sazabi DSN also works with other official Sentry SDKs including Go, Ruby, Java, and .NET.

Enable structured logs

To capture structured logs in addition to errors, enable logging in your SDK:

  • JavaScript: enableLogs: true in Sentry.init
  • Python: enable_logs=True in sentry_sdk.init

Set up with the CLI

You can also register the Sentry SDK log source with the Sazabi CLI (installed and authenticated — see CLI reference).

Registering the source mints the same intake URL the dashboard shows above (the public key is embedded in its hostname):

sazabi log-sources create sentry --mode connectionless

The command prints the intake URL for the new source — copy the whole URL and point your sender at it using the configuration shown above. Run sazabi log-sources get <log-source-id> at any time to reprint the endpoint, or sazabi log-sources list to see every log source in the project.

Verify

Restart the application, then throw a test exception and write a structured log. Open the Intake page in the Sazabi dashboard and confirm error events from the Sentry SDK source appear. Records typically arrive within a minute or two.

Troubleshooting

Events do not appear — Confirm the DSN hostname in your Sentry.init call matches your intake URL. The DSN format is https://sazabi@<intake-host>/0.

Structured logs appear in Sentry but not in Sazabi (Python multiplex path) — On the Python before_send path, only error events are forwarded. Structured logs stay on your primary Sentry project. Verify with a test exception.

Attachments, profiles, or replay recordings are absent — Sazabi does not store binary attachments, profiles, replay recordings, or native crash blobs as logs.

Further reading