J'ai une base de données PostgreSQL sur mon ordinateur et une application qui exécute des requêtes.
Comment voir quelles requêtes ont été exécutées sur ma base de données?
J'utilise un ordinateur Linux et pgadmin.
Activer le journal du serveur:
log_statement = all
Cela enregistrera chaque appel sur le serveur de base de données.
Je n'utiliserais pas log_statement = all
sur un serveur de production. Produit d'énormes fichiers journaux.
Le manuel sur les paramètres de journalisation:
log_statement
(enum
)Contrôle les instructions SQL enregistrées. Les valeurs valides sont
none
(off),ddl
,mod
etall
(toutes les instructions). [...]
La réinitialisation du paramètre log_statement
nécessite un rechargement du serveur (SIGHUP
). Un redémarrage est pas nécessaire. Lisez le manuel sur la façon de définir les paramètres .
Ne confondez pas le journal du serveur avec le journal de pgAdmin. Deux choses différentes!
Vous pouvez également consulter les fichiers journaux du serveur dans pgAdmin, si vous avez accès aux fichiers (ce peut ne pas être le cas avec un serveur distant) et les configurer correctement. Regardez: Tools -> Server status
. Pour plus d'informations sur la fenêtre d'état du serveur, reportez-vous au manuel de pgAdmin III .
Je préfère lire les fichiers journaux du serveur avec vim
(ou un éditeur/lecteur de votre choix).
PostgreSql est très avancé lorsqu'il est associé aux techniques de journalisation
Les journaux sont stockés dans Installationfolder/data/pg_log folder
. Alors que les paramètres du journal sont placés dans le fichier postgresql.conf
.
Le format du journal est généralement défini sur stderr
. Mais le format de journal CSV est recommandé. Afin de permettre le changement de format CSV dans
log_destination = 'stderr,csvlog'
logging_collector = on
Pour enregistrer toutes les requêtes, très utiles pour les nouvelles installations, définissez min. temps d'exécution pour une requête
log_min_duration_statement = 0
Pour afficher les requêtes actives sur votre base de données, utilisez
SELECT * FROM pg_stat_activity
Pour consigner des requêtes spécifiques, définissez le type de requête
log_statement = 'all' # none, ddl, mod, all
Pour plus d'informations sur les requêtes de journalisation, voir PostgreSql Log .
J'ai trouvé le fichier journal à /usr/local/var/log/postgres.log sur une installation mac de brasser.
Lors de l’utilisation de Django avec postgres 10.6, la journalisation était activée par défaut et j’ai pu faire simplement:
tail -f /var/log/postgresql/*
Ubuntu 18.04, Django 2+, python3 +
Vous pouvez voir dans le dossier pg_log si la configuration du journal est activée dans postgresql.conf avec ce nom de répertoire du journal.