Logs Overview
Aggregate and analyze logs from Docker containers, SDKs, and direct API ingestion with real-time search, filtering, and dashboards.
Aggregate and analyze logs from Docker containers, SDKs, and direct API ingestion. View, search, and filter logs in real-time.
Automatically stream logs from all Docker containers with a single container deployment
Native SDKs for Flutter, Node.js, Next.js, Android, iOS, and Laravel with batching and retry logic
Send logs directly via REST API from any application, language, or framework
Full-text search with level filtering (error, warn, info, debug, trace) and source filtering
View logs in real-time with auto-refresh, stats cards, and detailed log viewer
Efficient batch ingestion for high-volume logging
Quick Start: Docker Agent#
docker run -d \ --name abrova-trace-agent \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -e ABROVA_TRACE_API_KEY=ab_srv_your_server_secret \ ghcr.io/abrova-co/abrova-trace-agent:latest
Use your project's server secret (ab_srv_...) from Abrova Console. Logs from all containers appear under Abrova Trace → Logs. Multi-host setup, container management and all options: Abrova Trace agent.
Quick Start: SDK Logging#
Use native SDKs for automatic log batching, exponential backoff, and mobile lifecycle awareness.
Flutter
// Enable logging
AbrovaTrace.enableLogging(sourceId: 'my-flutter-app');
// Send logs
AbrovaTrace.info('User login successful', metadata: {'user_id': 'user_123'});
AbrovaTrace.warn('Slow API response', metadata: {'duration_ms': 2500});
AbrovaTrace.logError('Database query failed', metadata: {'query': 'SELECT ...'});Node.js
const { LogService, LogLevel } = require('@abrova-trace/nodejs-sdk');
const logger = new LogService({
apiKey: 'ab_live_your_api_key',
sourceId: 'api-server',
environment: 'production',
});
logger.log('Server started', LogLevel.INFO);
logger.log('Payment failed', LogLevel.ERROR, { orderId: '12345' });Next.js
import { LogService } from '@abrova-trace/nextjs-sdk';
const logger = new LogService({
apiKey: process.env.ABROVA_TRACE_API_KEY!,
sourceId: 'nextjs-app',
platform: 'nextjs',
environment: process.env.NODE_ENV,
});
logger.log('Request received', 'info', { path: '/api/users' });SDK features: Retry with exponential backoff (up to 60s between attempts), max buffer (1000 logs), lazy timers (no battery drain when idle), mobile lifecycle hooks (auto-flush on background). Details differ per SDK — see each SDK's logging page.
Quick Start: API Ingestion#
Full field list and examples in other languages: Logs REST API.
curl -X POST https://trace.abrova.ir/api/logs/ingest \
-H "x-api-key: ab_srv_your_server_secret" \
-H "Content-Type: application/json" \
-d '{
"sourceId": "api-server",
"level": "info",
"message": "Server started on port 3000"
}'Batch Ingestion#
curl -X POST https://trace.abrova.ir/api/logs/ingest/batch \
-H "x-api-key: ab_srv_your_server_secret" \
-H "Content-Type: application/json" \
-d '{
"sourceId": "api-server",
"logs": [
{ "level": "info", "message": "Request received" },
{ "level": "debug", "message": "Processing..." },
{ "level": "info", "message": "Response sent in 45ms" }
]
}'Log Levels#
- fatal — Critical/unrecoverable errors
- error — Errors that need attention
- warn — Warnings about potential issues
- info — General application information
- debug — Detailed debugging information
- trace — Very detailed trace-level debugging
Limits and costs#
Free every month: 1 GB of logs. Above that, logs cost 15,000 Toman per GB from your wallet. Logs are kept for 30 days. See Pricing.
Log ingestion has generous rate limits per key and per client address. A client that exceeds them gets HTTP 429 with a Retry-After header; batching your logs keeps you far below them.