The server logs one line per request to stdout.

The line

tamarackdb-server: [WARNING] POST /write 503 27B 0.07ms
  • It carries the level, the method, the path, the status code, the response size, and the time taken.
  • It’s written once the handler ends. It wraps the whole routed handler, authentication included, so a request turned away with 401 is logged like any other.
  • It never carries a request or response body: queries, conditions, and events never reach the log.
  • logLevel sets the lowest level written: debug, info, warning, or error. The default, warning, prints only warning and error lines. Set it to debug to see every request while testing an integration.

Levels

Each outcome has a fixed level, not derived from the status code alone:

OutcomeStatusLevel
Successful request2XXdebug
Projection not found404debug
Concurrency conflict409debug
Invalid request400info
Payload too large413info
Missing or invalid bearer token401info
Server shutting down503info
Write queue full503warning
Internal error500error
Storage unreachable503error
  • debug: the server did exactly what it should, a success or an expected rejection (a conflict, a projection that doesn’t exist).
  • info: not the server’s fault, but worth knowing: a malformed or oversized request, a bad token, or a request turned away during shutdown.
  • warning: a real signal of capacity or contention, such as a full write queue.
  • error: a real failure.

The startup banner is described in Install.