Log all queries in the official Postgres docker image
If using Docker Compose, you can add this line to your docker-compose.yaml file:
command: ["postgres", "-c", "log_statement=all"]
and all your queries will be written into the container log file.
Setting log_destination
to stderr
did the trick for me without creating a new image:
version: "2.2"
services:
db:
image: postgres:12-alpine
command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"]
And then I was able to trace the statements using docker-compose logs -f db
.
Should work with other versions too, but I only tested it with postgres:12-alpine
.
In case of running docker run directly from docker command, try follow command:
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=pass -e POSTGRES_DB=postgres -p 5432:5432 --name db postgres:10 postgres -c log_statement=all
The tailing part is overriding command as described here overriding docker file
Good luck!