Logging
The starter logs through Convex's native log pipeline on the backend and the platform console in the Next.js apps.
The starter does not ship a separate logging library. The backend logs through Convex's native log pipeline, and the Next.js apps log through the platform console. This keeps logging zero-dependency and consistent with where each runtime already collects output.
Backend Logging (Convex)
Convex automatically captures console.log, console.warn, and console.error
inside backend functions, structures them, and surfaces them in the Convex
dashboard with per-function context and retention:
// In a Convex function (packages/backend/convex/...):
console.warn("Skipping subscription grant: unmapped price ID", { priceId });For production aggregation, configure Log Streams to forward these logs to Axiom, Datadog, or a webhook. No application code changes are required.
Frontend / Node Logging (Next.js apps)
In apps/app and apps/marketing, use console for server and client logs. On
Vercel (or most Node hosts) these are collected and structured by the platform's
log drain.
If you specifically want JSON-structured logs inside the Next.js runtime, add a logger such as Pino in that app. Keep the backend on Convex's native logging rather than routing it through a separate library — Convex already structures and retains it.
See Also
- Error Handling — the structured error pattern used in Convex functions.
- Audit logs (
audit_events) are a separate, authoritative record of security-sensitive actions, distinct from operational logs.