Maturity Matrix

Basic logging

Basic logging is the first and most primitive form of production visibility: writing text output to stdout, stderr, or a log file so that when something goes wrong you have some re

  • ·Basic application logging exists
  • ·Alerting fires on application errors
  • ·Logs are searchable (centralized logging, not just local files)
  • ·No feedback loop exists between production issues and development priorities

Evidence

  • ·Logging configuration in application code
  • ·Alert configuration (PagerDuty, Opsgenie, or equivalent)

What It Is

Basic logging is the first and most primitive form of production visibility: writing text output to stdout, stderr, or a log file so that when something goes wrong you have some record of what happened. At this level, logging means console.log, print(), System.out.println(), or their equivalents scattered through the codebase wherever a developer thought they might need to debug something. The output is unstructured prose - sentences like "got here", "user id is 42", "something went wrong" - with no consistent format, no severity levels enforced uniformly, and no aggregation layer collecting logs from multiple instances.

Most codebases start here and many stay here longer than they should. The logs exist on individual servers, in container stdout that evaporates when the container restarts, or in files that get rotated and deleted. Retrieving them requires SSH access to the machine, knowledge of which server handled the request, and patience. In a multi-instance or containerized environment, logs from different replicas are siloed - you might find the log for one request on server A and never know that the related error occurred on server B.

For a team not yet using AI agents, basic logging is painful but survivable. Developers debug production issues by SSHing into boxes, grepping log files, and piecing together narratives from scattered output. It is slow and unpleasant but possible. For a team using AI agents, basic logging is a dead end. Agents cannot grep across distributed log files over SSH. They have no queryable interface into production state. When a production incident occurs, an agent has no input channel to investigate it - the logs are inaccessible, unsearchable, and structurally opaque even if retrieved.

The practical ceiling of basic logging is clear: it works for a single developer debugging a single-instance application on a machine they control. The moment you have multiple instances, containers, or multiple developers needing simultaneous access to log data, the approach breaks down. Recognizing basic logging as a maturity floor - something to move past, not optimize - is the first step toward production observability.

Why It Matters

Understanding what basic logging cannot do shapes the upgrade path:

  • No aggregation means no cross-service correlation - when a request spans three services, basic logging gives you three separate log streams with no way to link them to a single trace
  • Unstructured output blocks programmatic analysis - you cannot query "all errors from the payment service in the last hour" when the log format is inconsistent prose
  • Ephemeral storage loses history - container restarts, log rotation, and instance termination destroy the evidence you need for post-incident analysis
  • No agent input channel - AI agents investigating production issues need a queryable, structured interface; basic logging provides neither queryability nor structure
  • Debugging requires human presence at the machine - every production investigation requires a developer to manually access infrastructure, which does not scale and cannot be delegated to agents

Getting Started

6 steps to get from here to the next level

Common Pitfalls

Mistakes teams actually make at this stage - and how to avoid them

How Different Roles See It

B
BobHead of Engineering

Bob's team has production issues that take hours to diagnose because log data is scattered across individual server instances and nobody has consistent access. Post-mortems reference "couldn't find the relevant logs" as a recurring theme. Bob knows the situation is bad but isn't sure how to frame the investment.

What Bob should do - role-specific action plan

S
SarahProductivity Lead

Sarah sees developers spending significant time on production debugging and wants to reduce the friction. She also knows the team plans to introduce AI agents for incident investigation, but the current logging state makes that impossible - agents have no queryable interface to production data.

What Sarah should do - role-specific action plan

V
VictorStaff Engineer - AI Champion

Victor wants to give AI agents access to production signals so they can investigate anomalies autonomously. He knows that the current basic logging setup is the primary blocker - there is no structured, queryable interface for agents to consume.

What Victor should do - role-specific action plan

Observability & Feedback Loop