Alle PostgreSQL-Abfragen protokollieren

Bilal Shahid 20 Juni 2023
  1. Überblick über PostgreSQL-Abfragen
  2. Suchen Sie die Konfigurationsdatei
  3. Suchen Sie den Datenverzeichnispfad
  4. PostgreSQL konfigurieren und Protokollausgabe generieren
  5. Starten Sie Ihr PostgreSQL neu
  6. Überprüfen Sie die Protokollgenerierung
Alle PostgreSQL-Abfragen protokollieren

PostgreSQL ist auf dem Markt für seine Robustheit, Geschwindigkeit, Zuverlässigkeit und hohe Leistung beliebt. Darüber hinaus wurde die Protokollierung mit PostgreSQL relativ einfach gemacht, indem nur wenige Konfigurationseinstellungen geändert wurden.

Diese Einstellungen können im Speicher geändert werden, wodurch die Protokollierung vorübergehend nur für diese bestimmte Clientsitzung aktiviert wird. Postgres kann jedoch alle Abfragen protokollieren, um dauerhaft zu funktionieren.

In diesem Artikel erfahren Sie, wie Sie alle PostgreSQL-Abfragen protokollieren und Konfigurationsdateien aktualisieren.

Überblick über PostgreSQL-Abfragen

PostgreSQL ist dafür bekannt, eine hochstabile Datenbankanwendung zu sein, auf die Benutzer zugreifen, ändern und implementieren können, was immer sie benötigen. Infolgedessen ist es die primäre Datenbank für viele Analyse- und Webanwendungen weltweit.

SQL ist eine strukturierte Abfragesprache, die Daten in Datenbanken speichert und verarbeitet. SQL-Abfragen helfen überall bei der Durchführung verschiedener Datenoperationen in relationalen Datenbankverwaltungssystemen.

Durch diese leistungsstarke Sprache können wir verschiedene Operationen ausführen, die von der Ausführung komplexer Abfragen über das Abrufen von Daten bis hin zum Einfügen, Aktualisieren und Löschen von Datensätzen in einer Datenbank reichen.

Es ermöglicht Ihnen auch, neue Objekte in einer Datenbank zu erstellen und Berechtigungstabellen, Ansichten, Prozeduren, Funktionen usw. festzulegen.

Was die Postgres-Funktion Alle Abfragen protokollieren betrifft, müssen Sie die Protokollierung in PostgreSQL aktivieren, indem Sie die Konfigurationseinstellungen ändern und den Server neu starten.

Suchen Sie die Konfigurationsdatei

Wenn Sie die Konfigurationsdatei postgresql.conf nicht finden können, steht eine einfache Methode zur Verfügung, um ihren Speicherort zu finden. Verbinden Sie sich zuerst mit dem postures client und führen Sie den folgenden Befehl aus.

postgres=# SHOW config_file;

Nach Ausführung des Befehls erhalten wir den Pfad zur Datei postgresql.conf. Fahren Sie fort, um die Datei mit einem Texteditor (wir verwenden nano) mit dem folgenden Befehl zu öffnen und beginnen Sie mit der Änderung der Einstellungen.

$ nano /etc/postgresql/version/main/postgresql.conf

Suchen Sie den Datenverzeichnispfad

Stellen Sie sicher, dass Sie den Pfad Ihres Postgres-Installationsdatenverzeichnisses bestätigen. Rufen Sie dann das Datenverzeichnis so ab, wie Sie die Konfigurationsdatei abgerufen haben.

postgres=# SHOW data_directory;

Sie erhalten einen Pfad für das Datenverzeichnis. Das Verzeichnis und die Konfigurationsdateien befinden sich jedoch im selben Installationspfad. Kopieren Sie daher das Datenverzeichnis und das Konfigurationsverzeichnis zur späteren Verwendung.

PostgreSQL konfigurieren und Protokollausgabe generieren

Öffnen Sie die Datei postgresql.conf und scrollen Sie nach unten zum Abschnitt ERROR REPORTING AND LOGGING. Hier sehen Sie wahrscheinlich mehrere kommentierte Konfigurationseinstellungen.

Unter diesen Einstellungen sind einige kritisch: logging_collector und log_destination. Darüber hinaus gibt es einige empfohlene Einstellungen, die Sie vornehmen sollten.

Sie können sie jedoch an Ihre eigenen Bedürfnisse anpassen. Die empfohlenen Einstellungen sind wie folgt:

  • log_destination = 'csvlog'

  • logging_collector =on

  • log-directory = 'pg_log'

  • log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

  • log_min_error_statement = error

  • set log_min_duration_statement= 0 als Parameter, um jede Anweisung zu protokollieren

  • Dieser Schritt ist optional. Führen Sie den folgenden Code aus:

    SELECT set.config('log_statement','all, true );
    

Nachdem Sie die Werte für die Variablen wie oben beschrieben festgelegt haben, laden Sie die PostgreSQL-Konfiguration neu. Dies kann folgendermaßen erfolgen:

/usr/pgsqlversion/bin/pg_ctl reload -D /var/lib/pgsql/version/data/

Bei diesen Einstellungen haben wir die Einstellung log_filename auskommentiert, um Zeitstempel und einen richtigen Namen für die Protokolldateien zu erzeugen. Wir bringen Postgres auch dazu, Protokolle im CSV-Format zu generieren und sie im pg_log-Verzeichnis innerhalb des Datenverzeichnisses auszugeben.

Ändern Sie in Ihrer Datei data/postgresql.conf die Einstellung log_statement auf 'all'. Sobald Sie damit fertig sind, müssen Sie noch einige andere Einstellungen überprüfen.

Stellen Sie sicher, dass Ihr log_destination, logging_collector und Ihre Variablen eingeschaltet sind. Sie müssen sicherstellen, dass das log_directory im Datenverzeichnis vorhanden ist und dass der Postgres-Benutzer darauf schreiben kann.

Starten Sie Ihr PostgreSQL neu

Der letzte Schritt, damit Postgres alle Abfragen protokolliert, besteht darin, den PostgreSQL-Dienst neu zu starten. Entscheidend ist, dass beim Fortfahren die von Ihnen geänderten Einstellungen in der Konfigurationsdatei wirksam werden.

Ein Postgres-Neustart kann jedoch in verschiedenen Systemen unterschiedlich sein. Typischerweise hat ein Unix-System einen Befehl, der die Aufgabe erledigt. Der Befehl sieht in etwa so aus:

$ service postgresql restart

Überprüfen Sie die Protokollgenerierung

Nachdem Sie das Postgres-System neu gestartet haben, sollten Ihre Änderungen wirksam werden. Nach dem Neustart sollte die Protokollierung sofort beginnen. Um dies sicherzustellen, gehen Sie zum Verzeichnis data/pg_log Ihrer spezifischen Postgres-Installation.

Vor einigen Schritten haben wir Sie gebeten, den Datenverzeichnispfad zu speichern. Hier setzen Sie es ein. Navigieren Sie als Nächstes zu diesem Verzeichnis, indem Sie am Ende /pg_log hinzufügen, um zum Protokollverzeichnis zu gelangen.

$ cs /var/lib/postgresql/version/main/pg_log

Fahren Sie fort, um die Dateien aufzulisten.

$ ls -l

Nach dem vorherigen Neustart des Postgres-Dienstes wird eine Protokolldatei erstellt. Diese automatisch generierten Protokolldateien werden für Postgres erstellt, um alle Abfragen zu protokollieren, indem einige Konfigurationseinstellungen geändert werden.

Im Laufe der Zeit wachsen Protokolldateien in der Regel stark an und können letztendlich Ihren Computer zum Absturz bringen. Um dies zu verhindern, schreiben Sie ein Bash-Skript, das Protokolle löscht und den Postgresql-Server zu Ihrer Sicherheit neu startet.

Ein weiterer Ansatz, wenn Sie kein Bash-Skript schreiben, aber die Protokolldateien monatlich überschreiben möchten, führen Sie dazu ein einfaches Verfahren durch: 'log_filename='postgresql-%d.log'.

Es wird nicht nach jedem Neustart überschrieben, sondern jeden Tag angehängt und jeden Monat überschrieben. Alle oben genannten protokollieren Lösungen aus der Standarddatenbank von postgreSQL.

Um auch andere zu protokollieren, müssen Sie mit deren Lösung beginnen und dann Folgendes ausführen:

ALTER DATABASE databasename
SET log_statement = 'all';

Beim Navigieren durch das Postgres-Protokoll können alle Abfrageprozesse verwirrend erscheinen; Dieser Artikel soll die Dinge einfacher machen. Wir haben einen Schritt-für-Schritt-Prozess bereitgestellt, damit Sie auf dem besten Weg sind, Abfragen in PostgreSQL zu protokollieren.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Verwandter Artikel - PostgreSQL Query