v0.1.2 — now available

Ship logs and metrics
from any server.
No dependencies.

uplog is a single binary that tails your log files, collects system metrics, and ships structured JSON to any backend over HTTP. Configure it in five lines of TOML.

View on GitHub
< 10MB RAM|Single binary|Backend-agnostic

How it works

Tail

Log collection

Watches your log files. Every new line becomes a structured LogLine with source, timestamp, and message.

Collect

Metric collection

Snapshots CPU usage, memory, disk, and network counters on your configured interval.

Ship

HTTP shipping

Batches everything into a single JSON payload and POSTs it to your endpoint. Works with any backend.

Five lines of config

[agent]
id = "prod-api-01"

[logs]
paths = ["/var/log/app.log", "/var/log/nginx/access.log"]

[metrics]
interval_secs = 30

[shipper]
endpoint = "https://your-backend.com/ingest"
ship_interval_seconds = 60

Drop it in the same directory as the binary, or pass --config /path/to/uplog.toml

What gets shipped

{
  "agent_id": "prod-api-01",
  "timestamp": "2025-06-07T10:00:00Z",
  "metrics": {
    "collected_at": "2025-06-07T09:59:30Z",
    "cpu_usage_percent": 12.4,
    "memory_used_mb": 1024,
    "memory_total_mb": 8192,
    "disk_used_gb": 45.2,
    "disk_total_gb": 200.0,
    "network_bytes_sent": 104857600,
    "network_bytes_recv": 52428800
  },
  "logs": [
    {
      "source": "file:/var/log/app.log",
      "timestamp": "2025-06-07T10:00:00Z",
      "message": "GET /api/health 200 14ms"
    }
  ]
}

Every payload is self-describing. No schema registration. No agents to configure on the receiving end.

Download

# Linux / macOS
curl -fsSL https://uplog.in/install | sh

# Windows (PowerShell)
irm https://uplog.in/install | iex

# Run
uplog --config uplog.toml

Source available on GitHub. Build from source with cargo build --release

Open source. MIT licensed.

Read the source, open issues, submit PRs.

View on GitHub →