web-dev-qa-db-fra.com

PostgreSQL comment voir quelles requêtes ont été exécutées

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.

41
kamaci

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 et all (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).

47
Erwin Brandstetter

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 .

37
arvind

J'ai trouvé le fichier journal à /usr/local/var/log/postgres.log sur une installation mac de brasser.

4
Michael

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 +

0
jmunsch

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.

0
s21s