Production Logging with Pino in Node.js Applications
5 min read
Why console.log Is Not Enough
console.log is useful during local development, but unstructured text becomes difficult to search and correlate across production instances. It also lacks consistent severity levels and request context.
console.log('Request failed', error);Structured Logging with Pino
Pino writes structured JSON logs that log platforms can parse, index, filter, and aggregate without relying on fragile text patterns.
logger.error({
requestId,
responseTime,
err: error,
}, "Request failed");Essential Log Fields
- Timestamp
- Log level
- Request ID
- Response time
- Error message and stack
Request Correlation
A request ID connects logs created by middleware, business services, database operations, and downstream integrations. This makes it possible to reconstruct a failed request without manually matching timestamps.
Lesson
Production logs should be machine-readable, contextual, and consistent. Pino provides the structure needed for monitoring dashboards, alerting, performance analysis, and faster incident investigation.