LogTower Documentation
Everything you need to start monitoring your bots and automated processes in under 5 minutes.
Quick start
Get from zero to a live dashboard in 3 steps:
Create a free account
Go to logtower.dev/signup and enter your email. You'll get an API key instantly.
Download your reporter
In your dashboard, click the Alerts tab and hit Download reporter.py. Your API key is already configured inside.
Run it on your server
Upload reporter.py to the server where your bots run:
scp reporter.py user@YOUR_SERVER_IP:/path/to/reporter.py
Then SSH in and run:
pip install requests python3 reporter.py
Your dashboard will populate within 60 seconds.
How it works
LogTower uses a lightweight reporter script that runs alongside your bots. It reads your existing log files — no changes to your bot code required.
Your bots → log files → reporter.py → logtower.dev → your dashboard
The reporter runs every 60 seconds, reads the last 500 lines of each log file, extracts trades and status data, and sends a structured payload to LogTower. Your dashboard updates automatically.
print() instead of a log file, redirect output when running it:
python3 bot.py > bot.log 2>&1 & — then point LogTower at bot.log.
Requirements
- Python 3.7+ on the server where your bots run
- The
requestslibrary (pip install requests) - Your bots must write to log files (any format)
- Outbound HTTPS (port 443) access from your server
Configure your bots
Open reporter.py and edit the BOT_CONFIGS section:
BOT_CONFIGS = [
{
"id": "grid_bot", # Unique ID for this bot
"name": "Grid Bot", # Display name in dashboard
"strategy": "Grid Trading", # Strategy description
"log_path": "/path/to/grid_bot.log", # Full path to log file
"type": "generic", # Log format type
},
{
"id": "arb_bot",
"name": "Arbitrage Bot",
"strategy": "Cross-exchange arb",
"log_path": "/home/ubuntu/bots/arb.log",
"type": "generic",
},
]
| Field | Required | Description |
|---|---|---|
| id | Yes | Unique identifier — no spaces, used internally |
| name | Yes | Display name shown in your dashboard |
| strategy | Yes | Strategy description shown under the bot name |
| log_path | Yes | Absolute path to the log file on your server |
| type | No | Log format — use "generic" for standard formats |
Keep it running after you close SSH
nohup python3 reporter.py > reporter.log 2>&1 &
Auto-start on server reboot
Add to your crontab (crontab -e) — always use full absolute paths:
@reboot nohup python3 /home/ubuntu/reporter.py > /home/ubuntu/reporter.log 2>&1 &
./reporter.py won't work in crontab. Always use the full path starting from /.
Supported log formats
LogTower's generic parser automatically detects these patterns:
Trade executions
19:18:08 [XBTUSD] buy 0.000226 @ $70217.95 | ID: OMOKVD-H75QF-F7TMBJ 19:18:08 [ETHUSD] sell 0.5 @ $2100.00 | ID: ABC123-DEF456-GHI789
Status heartbeats
19:18:10 [BTC] Price: $71316.8 | Orders: 20 | Daily: $12.50 | All-time: $342.10
Stop loss events
03:49:50 [BTC] STOP LOSS HIT @ $65612.1
Custom log formats
If you want to do it yourself: add a custom regex pattern to the parse_generic_log function in reporter.py. The parser looks for these fields: timestamp, asset, side (buy/sell), size, price, and order ID.
Alerts
Configure alerts in the ⚙ Alerts tab of your dashboard. All alerts are sent from alerts@logtower.dev.
Available alert types
| Alert | Trigger |
|---|---|
| Bot stopped | Any bot's status changes to STOPPED or ERROR |
| Stop loss hit | "STOP LOSS HIT" appears in any bot log |
| Daily P&L threshold | Combined daily P&L drops below your set value |
| Stale bot | A running bot's log hasn't updated in X minutes |
| Exchange errors | A bot accumulates 3+ consecutive exchange errors |
Alert deduplication
LogTower limits alerts to 2 per incident — an initial alert and one reminder. After that, you won't hear about the same issue again until the bot recovers. When it does, you'll get a recovery notification.
API reference
All API endpoints use https://logtower.dev as the base URL. Authenticate with your API key via the X-API-Key header or ?key= query parameter.
POST /api/update
Send bot data from the reporter. Called automatically by reporter.py every 60 seconds.
GET /api/status
Retrieve the latest bot data for your dashboard.
curl "https://logtower.dev/api/status?key=YOUR_API_KEY"
GET /api/settings
Retrieve your alert settings.
POST /api/settings
Update your alert settings.
GET /api/reporter
Download your pre-configured reporter.py.
curl "https://logtower.dev/api/reporter?key=YOUR_API_KEY" -o reporter.py
Plans & billing
| Feature | Free | Pro ($29/mo) |
|---|---|---|
| Bots monitored | Up to 3 | Unlimited |
| Dashboard | ✓ | ✓ |
| P&L tracking | ✓ | ✓ |
| Trade history | ✓ | ✓ |
| Email alerts | ✓ | ✓ |
| SMS alerts | — | ✓ |
| Update interval | 60 seconds | 30 seconds |
| History retention | 30 days | 90 days |
| Support | Priority email |
FAQ
Does LogTower work with any programming language?
Yes — as long as your bot writes to a log file, LogTower can monitor it. The reporter reads log files directly, so the language your bot is written in doesn't matter.
Does LogTower work with any exchange?
Yes. LogTower reads your log files, not your exchange API. It works with Kraken, Binance, Bybit, Alpaca, Interactive Brokers, or any other exchange your bot is connected to.
Is my trading data secure?
Yes. Each user's data is isolated by API key. LogTower only reads what your reporter sends — trade times, sizes, prices, and P&L. No API keys or exchange credentials are ever shared with LogTower.
What happens if my server restarts?
Add the reporter to your crontab with @reboot and it will restart automatically. See the Configure section above.
Can I monitor bots on multiple servers?
Yes. Run a reporter.py on each server and point them all at the same API key. All bots will appear in one dashboard.
How do I cancel?
Email support@logtower.dev and we'll cancel immediately. No questions asked.