it-swarm.com.de

PostgreSQL, um zu sehen, welche Abfragen ausgeführt wurden

Ich habe eine PostgreSQL-Datenbank auf meinem Computer und eine Anwendung, die Abfragen darauf ausführt.

Wie kann ich sehen, welche Abfragen in meiner Datenbank ausgeführt wurden?

Ich benutze einen Linux-Computer und pgadmin.

41
kamaci

Aktivieren Sie das Serverprotokoll:

log_statement = all

Dadurch wird jeder Aufruf des Datenbankservers protokolliert.

Ich würde log_statement = all nicht auf einem Produktionsserver verwenden. Erzeugt riesige Protokolldateien.
Das Handbuch zu Logging-Parametern:

log_statement (enum)

Steuert, welche SQL-Anweisungen protokolliert werden. Gültige Werte sind none (aus), ddl, mod und all (alle Anweisungen). [...]

Das Zurücksetzen des Parameters log_statement erfordert ein Neuladen des Servers (SIGHUP). Ein Neustart ist nicht notwendig. Lesen Sie das Handbuch zum Einstellen von Parametern .

Verwechseln Sie das Serverprotokoll nicht mit dem Protokoll von pgAdmin. Zwei verschiedene Dinge!

Sie können die Server-Protokolldateien auch in pgAdmin anzeigen, wenn Sie auf die Dateien zugreifen können (dies ist möglicherweise bei einem Remote-Server nicht der Fall), und richten Sie sie ordnungsgemäß ein. Schau mal unter: Tools -> Server status. Weitere Informationen zum Serverstatusfenster finden Sie im manual für pgAdmin III .

Ich bevorzuge das Lesen der Server-Protokolldateien mit vim (oder einem Editor/Reader Ihrer Wahl).

47

PostgreSql ist sehr fortgeschritten, wenn es um Logging-Techniken geht

Protokolle werden in Installationfolder/data/pg_log folder gespeichert. Während Protokolleinstellungen in postgresql.conf-Datei gespeichert werden.

Das Protokollformat wird normalerweise als stderr festgelegt. Es wird jedoch das CSV-Protokollformat empfohlen. Um die CSV-Formatänderung in zu aktivieren 

log_destination = 'stderr,csvlog'   
logging_collector = on

Um alle Abfragen zu protokollieren, sehr nützlich für Neuinstallationen, setzen Sie min. Ausführungszeit für eine Abfrage

log_min_duration_statement = 0

Um aktive Abfragen in Ihrer Datenbank anzuzeigen, verwenden Sie

SELECT * FROM pg_stat_activity

Um bestimmte Abfragen zu protokollieren, stellen Sie den Abfragetyp ein 

log_statement = 'all'           # none, ddl, mod, all

Weitere Informationen zu Logging-Abfragen finden Sie unter PostgreSql Log .

37
arvind

Ich fand die Protokolldatei unter /usr/local/var/log/postgres.log auf einer Mac-Installation von brew.

4
Michael

Bei Verwendung von Django mit Postgres 10.6 war die Protokollierung standardmäßig aktiviert, und ich konnte einfach Folgendes tun:

tail -f /var/log/postgresql/*

Ubuntu 18.04, Django 2+, Python3 +

0
jmunsch

Sie können im Ordner pg_log sehen, ob die Protokollkonfiguration in postgresql.conf mit diesem Protokollverzeichnisnamen aktiviert ist.

0
s21s