Se référer à este vous devez activer logging_collector
alors vous pouvez voir les requêtes entrantes dans la rubrique log_directory
's log_filename
.
Et pour l'activer dans docker logs
vous avez dû trouver une astuce pour le faire, une solution est la suivante :
wrapper.sh :
#!/usr/bin/env bash
mkdir /logs
touch /logs/postgresql.log
chmod -R 777 /logs
tail -f /logs/* &
/docker-entrypoint.sh "$@"
Ci-dessus, nous utiliserons tail
pour surveiller /logs/postgresql.log
qui sera ensuite utilisé par postgresql
's logging_collector
et le montrer docker logs
.
Dockerfile :
FROM postgres:11.1-alpine
COPY wrapper.sh /
RUN chmod +x /wrapper.sh
ENTRYPOINT ["/wrapper.sh"]
CMD ["postgres", "-c", "logging_collector=on", "-c", "log_directory=/logs", "-c", "log_filename=postgresql.log", "-c", "log_statement=all"]
Ci-dessus, nous utiliserons personnaliser wrapper.sh
il va d'abord surveiller le journal de postgre, l'imprimer, puis se connecter pour exécuter la commande par défaut docker-entrypoint.sh
pour démarrer le serveur postgresql.
Après le démarrage du conteneur, afficher les journaux avant les requêtes entrantes :
orange@orange:~/abc$ docker build -t abc:1 .
orange@orange:~/abc$ docker run -idt abc:1
orange@orange:~/abc$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9112eb785e5 abc:1 "/wrapper.sh postgre…" 2 seconds ago Up 1 second 5432/tcp loving_joliot
orange@orange:~/abc$ docker logs loving_joliot
The files belonging to this database system will be owned by user "postgres".
......
2019-07-13 03:38:14.030 UTC [46] LOG: database system was shut down at 2019-07-13 03:38:13 UTC
2019-07-13 03:38:14.034 UTC [10] LOG: database system is ready to accept connections
Simulez quelques requêtes entrantes, et revoyez les logs :
orange@orange:~/abc$ docker exec -it -u postgres loving_joliot psql -c "SELECT datname FROM pg_database;"
datname
-----------
postgres
template1
template0
(3 rows)
orange@orange:~/abc$ docker logs loving_joliot
The files belonging to this database system will be owned by user "postgres".
......
2019-07-13 03:38:14.030 UTC [46] LOG: database system was shut down at 2019-07-13 03:38:13 UTC
2019-07-13 03:38:14.034 UTC [10] LOG: database system is ready to accept connections
2019-07-13 03:41:22.859 UTC [62] LOG: statement: SELECT datname FROM pg_database;
Vous pouvez voir ci-dessus que nous simulons l'exécution d'un sql. SELECT datname FROM pg_database;
et dans docker logs
nous pouvions déjà voir ce sql.