Skip to content
·8 min read

Log Aggregation and Centralized Logging for Solo Builders

How to ship logs from every environment to one searchable place without spending more than fifty dollars a month or running your own infrastructure

Share

Log aggregation is the practice of shipping logs from every part of your app, web servers, background workers, scheduled jobs, third-party integrations, into one searchable database. For a solo builder, the difference between scattered logs and aggregated logs is the difference between debugging in hours and debugging in minutes. Every place your app emits log lines should ship them to the same destination, and that destination should be queryable on any field, not just by time.

This guide covers the tools that make log aggregation cheap and easy for solo builders, the shipping pattern that works across every framework, and the dashboards that turn raw logs into operational insight.

Why Scattered Logs Kill Solo Builders

Most vibe coded apps emit logs in three to five places. The web server logs to its hosting platform. The background worker logs to its queue service. The cron job logs to wherever the cron runs. The third-party integration writes its own logs. Production logs to a different place than staging. The result is that when something goes wrong, you have five tabs open and are correlating timestamps by hand.

This is sustainable for exactly one person debugging exactly one issue at a time. Add any complexity, multiple users hitting different bugs, an issue that crosses service boundaries, a problem that started yesterday, and the scattered approach collapses. The fix is to ship every log line to one place and search across all of them.

Key Takeaway

A 2024 industry survey of small SaaS operators found that solo builders who centralized their logs spent a median of 11 minutes per incident on log investigation, compared to 47 minutes for builders with scattered logs. The 4x improvement was the largest single productivity gain reported.

The pattern to copy is a hospital intake desk. No matter what part of the hospital a patient came from, the intake desk has the complete record. Every test result, every prescription, every prior visit, all in one place searchable by name, date, or condition. Your logs need the same posture.

Picking a Log Service

The three services I recommend for solo builders, in rough order of best fit, are Better Stack, Axiom, and Datadog. Each has a generous free tier, accepts logs over HTTP, and provides search and dashboards out of the box.

Better Stack (formerly Logtail) is the simplest setup, with a free tier that covers up to 1 GB of logs per month. It bundles uptime monitoring, status pages, and incident management on the same subscription, which is convenient if you are also setting up those tools. The query language is similar to SQL, easy to pick up.

Axiom has a uniquely generous pricing model for solo builders, the free tier includes 500 GB of monthly ingest with 30-day retention, which is enough for almost any pre-revenue app. The query language (APL) is more powerful but takes a day to learn. The performance on large queries is better than Better Stack.

Datadog is the enterprise choice. The free tier is limited but the paid tiers offer the most powerful querying, the most integrations, and the best alerting. The cost climbs quickly past 100 GB per month, so it is overkill for most solo builders.

EXPLAINER DIAGRAM titled LOG SERVICE COMPARISON shown as a four row table on a slate background. Columns SERVICE, FREE TIER, BEST FOR, KEY FEATURE. Row 1 SERVICE BETTER STACK, FREE TIER 1 GB MONTH, BEST FOR ALL IN ONE OBSERVABILITY, KEY FEATURE BUNDLED UPTIME AND STATUS. Row 2 SERVICE AXIOM, FREE TIER 500 GB MONTH 30 DAY RETENTION, BEST FOR SOLO BUILDERS PRE REVENUE, KEY FEATURE GENEROUS RETENTION AND APL. Row 3 SERVICE DATADOG, FREE TIER 5 LIMITED HOSTS, BEST FOR ENTERPRISE TEAMS, KEY FEATURE BIGGEST INTEGRATION ECOSYSTEM. Row 4 SERVICE OPEN SOURCE LOKI, FREE TIER SELF HOSTED, BEST FOR PRIVACY OR COMPLIANCE, KEY FEATURE FULL DATA OWNERSHIP. Each row has a colored dot. A footer reads PICK ON FREE TIER FIT NOT FEATURES.
Four common log services for solo builders sized by what they actually solve, not by feature lists.

The other option worth mentioning is self-hosted Loki, which is what major Kubernetes shops run. For a solo builder, the operational cost of running Loki is usually higher than just paying for a hosted service. Skip it unless you have specific privacy or compliance needs.

The Shipping Pattern

The integration with any of these services is similar. Install a small library, configure it with an API key from the service, and pipe your existing logger output through it. The pattern works for any framework.

import pino from 'pino';
import { betterStackTransport } from './better-stack';

const logger = pino({
  level: process.env.LOG_LEVEL ?? 'info',
  transport: {
    targets: [
      { target: 'pino/file', options: { destination: 1 } },
      { target: betterStackTransport, options: { token: process.env.BETTER_STACK_TOKEN } },
    ],
  },
});

The pattern above logs to both stdout (for local development and platform-native log viewing) and to Better Stack (for centralized search). This dual output means you do not lose anything if the log service has an outage, and you do not need to switch tools when debugging locally.

Centralize your logs once

Read the rest of the operations series for solo builders

Browse the grow category

The shipping itself is buffered and asynchronous. Your application code does not wait for logs to leave the machine, the transport library batches lines and sends them every second or every 100 lines, whichever comes first. This means logging never blocks request handling, even if the log service is briefly slow.

Configuring Useful Dashboards

Raw centralized logs are a database. The value comes from the queries you run against them. The minimum viable dashboard set is small but high-leverage.

Error rate over time. Count log entries with level: error per minute. Spikes are visible immediately, and the underlying entries are one click away. This single dashboard catches roughly 60% of the production issues a small app sees.

Latency by endpoint. If your logs include request duration, group by URL path and show p95/p99 latency over time. This catches slow endpoints before they become user complaints.

Top errors by request count. Group all error log entries by the error message or error code and rank them by count. The top three usually account for 80% of error volume, and fixing those three is high leverage.

EXPLAINER DIAGRAM titled THE STARTER DASHBOARD SET shown as a two by two grid of mock dashboards on a slate background. Top left labeled ERROR RATE OVER TIME shows a line chart trending upward to the right with a red spike, label reads CATCHES OUTAGES IN MINUTES. Top right labeled LATENCY BY ENDPOINT shows a horizontal bar chart with bars of varying lengths, label reads CATCHES SLOW ENDPOINTS. Bottom left labeled TOP ERRORS BY COUNT shows a ranked vertical bar chart with the top three bars highlighted, label reads 80 PERCENT FROM TOP THREE. Bottom right labeled REQUEST VOLUME BY USER shows a horizontal bar chart with one bar highlighted in red, label reads CATCHES ABUSERS AND BUGS. A center label reads FOUR DASHBOARDS COVER 80 PERCENT OF DEBUGGING NEEDS.
The four starter dashboards that turn centralized logs into operational visibility. Each one takes about ten minutes to configure.

Request volume by user or IP. Most log services support this kind of grouping natively. The pattern is to find users or IPs generating an unusual amount of traffic, often abuse or buggy clients hammering an endpoint. Catching this early prevents bills and outages.

Common Mistake

The most expensive log aggregation mistake is shipping logs without sampling or filtering, then watching the bill explode when traffic grows. Configure sampling on debug-level logs (keep 1 in 100), filter out health check pings, and set retention to 30 days as a default. Most builders only need long retention for specific compliance requirements.

The compounding return on log aggregation is enormous. Every dashboard you build, every saved query you write, every alert you configure stacks. After three months, you have a body of operational knowledge that turns most "what happened" investigations into a 60 second query.

What This Means For You

Log aggregation is one of the highest-leverage operational investments a solo builder can make. The setup, install a transport, point it at one of the three services, configure four dashboards, takes one afternoon and pays back during your first real incident.

  • If you're a founder: Do this before your first paid customer. The first time something breaks at 11pm, you will not have time to set it up, and the cost of debugging without it is exactly when you can least afford it.
  • If you're changing careers: Configuring centralized logs and useful dashboards is the kind of operational fluency that distinguishes "engineer" from "engineer who can be trusted with production." Practice once on a personal project.
  • If you're a student: Sign up for any of the three free tiers and ship the logs from a class project to it. Build the four dashboards. The exercise teaches more than a textbook chapter.
Stop debugging blind

Browse more observability and operations guides

Read more grow guides
PJ
Pranay Joshi

20+ years building products at scale. VP of Product & Engineering, startup founder, and AI coach. Helping dreamers turn ideas into reality with vibe coding.

The Tuesday Shipping Report

Every Tuesday, one focused email:

  • - The tool or technique that's actually working right now
  • - A real problem from the community (and how to solve it)
  • - What changed this week in the vibe coding landscape

Read by 1,000+ founders, developers, and creators building with AI. Free forever. No spam.