Self-hosted remote logging · Android · iOS · Web · Flutter · Go

Watch your app's logs on every device in the field.

LogWatcher streams logs, crashes and user feedback from your apps — Android, iOS, web, Flutter and Go services — to a dashboard you host on your own cloud, built for payment fleets out in the field.

gzip-batched uploadsper-device kill-switchlogs stay in your GCS bucket
prod-pos-042 · Athens · session #4180 LIVE

The device isn't on your desk

It's a payment terminal in a shop three hundred kilometres away. LogWatcher gives you its logcat without leaving yours.

Crashes arrive with context

Every crash lands with its stack trace and the log lines that led up to it — the story, not just the ending.

Your cloud, your logs

The whole backend runs in your Google Cloud project. Log data is written to your bucket and nowhere else.

What you get

Everything a fleet needs to be seen

Remote logging

Every d() i() w() e() from the field, batched, compressed and searchable in one place.

Crash reporting

Uncaught exceptions are reported automatically, stack trace and preceding logs attached.

In-app user feedback

A ready-made feedback screen ships with the SDK. Messages land next to the session's logs.

Per-device control

Turn logging up on one misbehaving terminal and off across the rest of the fleet — from the dashboard, no release needed.

Offline-first SDK

Logs queue in an on-device store and upload in gzip-compressed batches — nothing is lost when the network drops or the app crashes.

Self-hosted

Cloud Run, Firestore and a GCS bucket in your own project. Multi-tenant accounts, isolated per customer.

Integrate in minutes

Three steps to your first remote log

  1. 1

    Create an app in the dashboard

    Sign up, add an app, copy its application key.

  2. 2

    Add the SDK and initialize it

    One init() call at startup. SDKs for Android, iOS, JavaScript, Svelte, Flutter and Go.

  3. 3

    Watch logs arrive live

    Open the app's Logs view — every device shows up as it comes online.

App.kt
// point the SDK at your LogWatcher server, then init
LogWatcher.setApiUrl("https://fintechiq-logwatcher-19133922986.europe-west1.run.app")
LogWatcher.init(this, "YOUR_APP_KEY", true)

// log from anywhere
LogWatcher.d("PaymentFlow", "card inserted · reading chip")
LogWatcher.w("Network", "settle retry · latency 2.1s")

One terminal misbehaving? Turn its logging up remotely.

Every device checks in on launch and receives its own logging switch. Flip it from the dashboard — no release, no site visit — and watch that device's logs stream in.

How it works

Put eyes on your fleet today.

Create an account, add your first app and see a device's logs arrive — all before your coffee cools.

Create your account