sql >> Database >  >> RDS >> PostgreSQL

Query's loggen in PostgreSQL

  • Het configuratiebestand zoeken
    • Zoek het gegevensdirectorypad
  • PostgreSQL configureren om logboekuitvoer te genereren
    • Herstart de PostgreSQL-service
  • Log genereren verifiëren

Logboekregistratie inschakelen binnen PostgreSQL is vrij eenvoudig gemaakt door een handvol configuratie-instellingen te wijzigen en vervolgens de server opnieuw op te starten. Hoewel deze instellingen "in het geheugen" kunnen worden gewijzigd, waardoor tijdelijke logboekregistratie alleen voor die specifieke clientsessie mogelijk wordt, bespreken we in deze zelfstudie hoe u postgres kunt configureren om permanent iteratieve logbestanden voor alle sessies en verbindingen te maken.

Het configuratiebestand zoeken

Als u niet zeker weet waar de postgresql.conf config-bestand bevindt, is de eenvoudigste methode om de locatie te vinden, verbinding te maken met de postgres-client (psql ) en geef het SHOW config_file; commando:

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

In dit geval kunnen we het pad zien naar de postgresql.conf bestand voor deze server is /etc/postgresql/9.3/main/postgresql.conf . Open nu dat bestand met je favoriete teksteditor en we kunnen beginnen met het wijzigen van de instellingen:

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

Zoek het pad van de gegevensdirectory

Het is ook een goed idee om het pad van de data te bevestigen map voor uw postgre-installatie. Dit zal later nuttig zijn, en het ophalen van het pad is een kwestie van een andere eenvoudige SHOW verklaring:

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

Bij sommige installaties zijn het configuratiebestand en de data directory zal langs hetzelfde pad staan, terwijl ze in andere (zoals dit voorbeeld) anders zijn. Kopieer in ieder geval deze data directorypad voor later gebruik.

PostgreSQL configureren om logboekuitvoer te genereren

Met de postgresql.conf bestand openen, scroll naar beneden naar de ERROR REPORTING AND LOGGING sectie en u zult waarschijnlijk een aantal configuratie-opties zien die zijn becommentarieerd. De meest kritische van deze instellingen zijn log_destination en logging_collector . Hieronder staan ​​de aanbevolen instellingen, maar u kunt deze naar eigen wens aanpassen:

#------------------------------------------------------------------------------
# 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 vertellen we postgres om logs te genereren in de CSV formaat en om ze uit te voeren naar de pg_log directory (binnen de data adresboek). We hebben ook de commentaar verwijderd van de log_filename instelling om een ​​eigennaam te produceren, inclusief tijdstempels voor de logbestanden.

U kunt gedetailleerde informatie over al deze instellingen vinden in de official documentation .

Herstart de PostgreSQL-service

De laatste stap is om de PostgreSQL-service opnieuw te starten, zodat deze instellingen, in het bijzonder logging_collector , zal van kracht worden. Het uitvoeren van een herstart na gres verschilt van systeem tot systeem, maar voor een Unix-systeem ziet het commando er ongeveer zo uit:

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

Log genereren verifiëren

Nadat het systeem opnieuw is opgestart, moet het loggen onmiddellijk beginnen. Om ervoor te zorgen dat dit het geval is, navigeert u naar de data/pg_log map van uw postgre-installatie. Onthoud dat we de data hebben gepakt directorypad eerder, dus navigeer eenvoudig naar die directory door /pg_log . toe te voegen naar het einde om in de logmap te komen:

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

Maak nu een lijst van de bestanden en u zou moeten zien dat er een logbestand is aangemaakt na de vorige herstart van de service:

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

Daar hebben we het; automatisch gegenereerde logbestanden worden ingeschakeld met PostgreSQL door slechts een paar configuratie-instellingen te wijzigen.


  1. Postgresql-schemapad permanent instellen

  2. De ORDER BY-component is ongeldig in views, inline-functies, afgeleide tabellen, subquery's en algemene tabelexpressies

  3. Kan geen verbinding maken met postgres met jdbc in pyspark-shell

  4. Bulk invoegen met SQLAlchemy ORM