Logs
Live tails in the console
The Logs page tails logs as they are written. Server-level sources are administrator-only; instance sources follow the same instance scoping as everything else, so an operator sees the logs for their own instances.
Every log an instance writes is offered
Not only the Odoo log and the two nginx logs. Each database backup or restore, each interactive or non-interactive shell, and each console session leaves a timestamped file in the instance's own logs directory, and all of them are addressable from this page.
That matters for the ones nobody thinks to look for: the record of a shell someone opened on a production instance is addressable rather than sitting on disk waiting to be known about.
The pickers stay usable on a long-lived server
The server's logs are split into Server, Command audit and CLI runs, because they are
read for different reasons and the ohm invocations soon outnumber everything else.
Either picker gains a filter box once its list passes twenty entries. Filtering narrows what you can pick and never disturbs what is currently being tailed.
The bootstrap agent has the same page
The agent's Logs page on port 5201 is this page: the same live tail with its highlighting and overview ruler, follow, pause, copy and the two downloads, over the server's logs and, on an Instances tab, every instance's logs.
That matters when the API is down. The console cannot show you anything then, and the agent's copy is not a reduced fallback - it is the same viewer, reading from the host.
A server log file that has since been rotated away answers not found rather than failing.
On the host
| Path | Contents |
|---|---|
/root/.local/share/ohm/logs/ohm-cli-*.log | One log per CLI invocation |
/root/.local/share/ohm/logs/ohm-audit-*.log | The audit trail |
Container logs come from Docker directly:
$ sudo docker logs ohm-api --tail 200$ sudo docker logs ohm-web --tail 200Job logs
Every job captures its own log, which is a better starting point than the container log for anything that ran as a job. See Jobs.
Log rotation
ohm install sets up logrotate for the application's logs. Journal vacuuming, stale temporary
file removal and log expiry are also one of the built-in maintenance operations, and that one is
housekeeping: it is never license-restricted.
$ ohm system maintenanceAn nginx log detail that matters
nginx's real-IP handling rewrites the access log to show the client address recovered from forwarded headers. That is normally what you want, but it means the access log looks the same whether or not the address was actually recovered correctly.
If you are diagnosing intrusion prevention, do not use the access log as evidence that Fail2Ban is seeing real client addresses. See the trusted-proxy warning in Fail2Ban.