PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So protokollieren Sie Abfragen in PostgreSQL

  • Auffinden der Konfigurationsdatei
    • Suchen Sie den Datenverzeichnispfad
  • Konfigurieren von PostgreSQL zum Generieren von Protokollausgaben
    • Starten Sie den PostgreSQL-Dienst neu
  • Verifizieren der Protokollerstellung

Das Aktivieren der Protokollierung in PostgreSQL wird durch das Ändern einiger Konfigurationseinstellungen und das anschließende Neustarten des Servers ganz einfach. Während diese Einstellungen „im Speicher“ geändert werden können, wodurch die temporäre Protokollierung nur für diese bestimmte Clientsitzung aktiviert wird, behandeln wir in diesem Tutorial, wie Postgres konfiguriert wird, um permanent iterative Protokolldateien für alle Sitzungen und Verbindungen zu erstellen.

Auffinden der Konfigurationsdatei

Wenn Sie sich nicht sicher sind, wo die postgresql.conf config-Datei befindet, ist die einfachste Methode, den Speicherort zu finden, die Verbindung mit dem Postgres-Client (psql ) und geben Sie die SHOW config_file; aus Befehl:

postgres=# SHOW config_file;
               config_file
------------------------------------------
 /etc/postgresql/9.3/main/postgresql.conf

In diesem Fall sehen wir den Pfad zur postgresql.conf Datei für diesen Server ist /etc/postgresql/9.3/main/postgresql.conf . Jetzt öffnen Sie diese Datei einfach mit Ihrem bevorzugten Texteditor und wir können mit dem Ändern der Einstellungen beginnen:

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

Suchen Sie den Datenverzeichnispfad

Es ist auch eine gute Idee, den Pfad der data zu bestätigen Verzeichnis für Ihre Postgres-Installation. Dies wird später nützlich sein, und das Abrufen des Pfads ist eine Sache eines weiteren einfachen SHOW Aussage:

postgres=# SHOW data_directory;
        data_directory
------------------------------
 /var/lib/postgresql/9.3/main

Bei manchen Installationen sind die Konfigurationsdatei und die data Verzeichnis befinden sich auf demselben Pfad, während sie in anderen (wie diesem Beispiel) unterschiedlich sind. Kopieren Sie in jedem Fall diese data Verzeichnispfad zur späteren Verwendung.

Konfigurieren von PostgreSQL zum Generieren von Protokollausgaben

Mit der postgresql.conf Datei öffnen, scrollen Sie nach unten zu ERROR REPORTING AND LOGGING Abschnitt und Sie werden wahrscheinlich eine Reihe von Konfigurationsoptionen auskommentiert sehen. Die kritischste dieser Einstellungen ist log_destination und logging_collector . Nachfolgend finden Sie die empfohlenen Einstellungen, die Sie jedoch gerne an Ihre eigenen Bedürfnisse anpassen können:

#------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#------------------------------------------------------------------------------

# - Where to Log -

log_destination = 'csvlog'              # Valid values are combinations of
                                        # stderr, csvlog, syslog, and eventlog,
                                        # depending on platform.  csvlog
                                        # requires logging_collector to be on.

# This is used when logging to stderr:
logging_collector = on          # Enable capturing of stderr and csvlog
                                        # into log files. Required to be on for
                                        # csvlogs.
                                        # (change requires restart)

# These are only used if logging_collector is on:
log_directory = 'pg_log'                # directory where log files are written,
                                        # can be absolute or relative to PGDATA
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
                                        # can include strftime() escapes

Hier weisen wir Postgres an, Protokolle im CSV zu generieren formatieren und im pg_log ausgeben Verzeichnis (innerhalb der data Verzeichnis). Wir haben auch den log_filename auskommentiert Einstellung, um einen richtigen Namen einschließlich Zeitstempel für die Protokolldateien zu erzeugen.

Detaillierte Informationen zu all diesen Einstellungen finden Sie in der official documentation .

Starten Sie den PostgreSQL-Dienst neu

Der letzte Schritt besteht darin, den PostgreSQL-Dienst neu zu starten, damit diese Einstellungen, insbesondere logging_collector , wird wirksam. Die Durchführung eines Postgres-Neustarts unterscheidet sich von System zu System, aber normalerweise sieht der Befehl für ein Unix-System etwa so aus:

$ service postgresql restart
 * Restarting PostgreSQL 9.3 database server                               [ OK ]

Überprüfen der Protokollerstellung

Sobald das System neu gestartet wurde, sollte die Protokollierung sofort beginnen. Um dies sicherzustellen, navigieren Sie zu data/pg_log Verzeichnis Ihrer Postgres-Installation. Denken Sie daran, dass wir die data erfasst haben Verzeichnispfad früher, navigieren Sie also einfach zu diesem Verzeichnis, indem Sie /pg_log hinzufügen bis zum Ende, um in das Log-Verzeichnis zu gelangen:

$ cd /var/lib/postgresql/9.3/main/pg_log

Listen Sie nun die Dateien auf und Sie sollten sehen, dass nach dem vorherigen Dienstneustart eine Protokolldatei erstellt wurde:

$ ls -l
-rw------- 1 postgres postgres 935 Apr 13 20:30 postgresql-2016-04-13_203022.csv

Da haben wir es; automatisch generierte Protokolldateien werden mit PostgreSQL aktiviert, indem nur wenige Konfigurationseinstellungen geändert werden.