self-hosted error monitor Open the panel

Where the error comes in

Seven doors, and none requires another. The cheapest is the one you already have: if your application reports to Sentry, changing the DSN is the whole integration.

Any Sentry SDK

Paste the DSN and you are done: Ruby, JS, Python, Java, .NET, PHP, Go. meulog speaks the protocol they already speak.

A meulog SDK

Delphi, Flutter, Ruby on Rails and the browser. Error with stack, what the person did before it broke, the heartbeat of a nightly job, how long an operation took, and the version that shipped.

A mailbox

Whatever arrives carrying an error: a bug report, a plain-text alert, JSON, or a line matched by a regular expression you write.

The report the tool uploads itself

A desktop crash reporter posts the report over HTTP with no code in the application — it is a setting, not a build. meulog speaks the madExcept one, and the endpoint is a single URL.

The application log

NDJSON from Vector, Fluent Bit or Filebeat: whatever passes the level becomes an occurrence.

A CSP violation

The browser sends it on its own, with no SDK and no token.

OpenTelemetry

Logs and duration histograms, through the Collector.

A plain POST

For whoever has no SDK and does not want one. One error or a batch, with a server token.

The meulog SDKs

They are the only door that sends what the error does not say. Four of them, none with a third-party dependency.

Delphi

Native, with no third-party dependency: Windows XE2 to 12 and Linux. The stack is captured at the raise, the queue survives a machine with no network, and the crash that kills the process still arrives.

Flutter

The three doors an exception leaves Flutter through, wired at once: the framework, a Future nobody awaited, and the platform isolate.

Ruby on Rails

A gem with a Railtie: two environment variables and the middleware is on. Nothing else to write.

The browser

One file, no build step. It catches what reaches the top of the page and what a promise dropped.

  • The error. With the stack, the machine, the version, and the screenshot when the platform has one.
  • What the person did. Next to the error on one timeline: the funnel and the paths come from here.
  • The heartbeat of a routine. A job that stopped running is invisible until someone asks. This is what makes it show up.
  • How long it took. Counted in buckets on the client, so a chatty process and a quiet one cost the same.
  • The version that shipped. It is what answers "did this release bring anything" two hours later, on its own.