sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan logger du forespørgsler i PostgreSQL

  • Placering af konfigurationsfilen
    • Find dataindeksstien
  • Konfiguration af PostgreSQL til at generere logoutput
    • Genstart PostgreSQL-tjenesten
  • Bekræftelse af loggenerering

Aktivering af logning i PostgreSQL gøres ret let ved at ændre en håndfuld konfigurationsindstillinger og derefter genstarte serveren. Selvom disse indstillinger kan ændres "i hukommelsen", og derved aktiverer midlertidig logning for kun den bestemte klientsession, vil vi i denne vejledning dække, hvordan man konfigurerer postgres til permanent at oprette iterative logfiler for alle sessioner og forbindelser.

Sådan finder du konfigurationsfilen

Hvis du er usikker på, hvor postgresql.conf config-filen er lokaliseret, den enkleste metode til at finde placeringen er at oprette forbindelse til postgres-klienten (psql ) og udsted SHOW config_file; kommando:

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

I dette tilfælde kan vi se stien til postgresql.conf filen for denne server er /etc/postgresql/9.3/main/postgresql.conf . Nu skal du bare åbne den fil med din foretrukne teksteditor, og vi kan begynde at ændre indstillinger:

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

Find dataindeksstien

Det er også en god idé at bekræfte stien til data bibliotek til din postgres installation. Dette vil være nyttigt senere, og at hente stien er et spørgsmål om en anden simpel SHOW erklæring:

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

På nogle installationer, konfigurationsfilen og data mappe vil være ad samme vej, mens de i andre (som dette eksempel) er forskellige. Uanset hvad, kopier disse data ned mappesti til senere brug.

Konfiguration af PostgreSQL til at generere logoutput

Med postgresql.conf fil åben, rul ned til ERROR REPORTING AND LOGGING afsnit, og du vil sandsynligvis se en række konfigurationsmuligheder kommenteret. De mest kritiske af disse indstillinger er log_destination og logging_collector . Nedenfor er de anbefalede indstillinger, men du er velkommen til at ændre disse, så de passer til dine egne behov:

#------------------------------------------------------------------------------ # 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

Her beder vi postgres om at generere logfiler i CSV formatere og udlæse dem til pg_log bibliotek (indenfor data vejviser). Vi har også fjernet kommentaren til log_filename indstilling til at producere et korrekt navn inklusive tidsstempler for logfilerne.

Du kan finde detaljerede oplysninger om alle disse indstillinger i den official documentation .

Genstart PostgreSQL-tjenesten

Det sidste trin er at genstarte PostgreSQL-tjenesten, så disse indstillinger, især logging_collector , træder i kraft. Udførelse af en postgres-genstart vil variere fra system til system, men typisk for et unix-system vil kommandoen se nogenlunde sådan ud:

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

Bekræftelse af loggenerering

Når systemet er blevet genstartet, skal logningen begynde med det samme. For at sikre, at dette er tilfældet, skal du navigere til data/pg_log mappe for din postgres installation. Husk, at vi greb data mappesti tidligere, så du skal blot navigere til den mappe ved at tilføje /pg_log til slutningen for at komme ind i logbiblioteket:

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

List nu filerne, og du skulle se, at en logfil er blevet oprettet efter den tidligere genstart af tjenesten:

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

Der har vi det; automatisk genererede logfiler aktiveres med PostgreSQL ved blot at ændre nogle få konfigurationsindstillinger.


  1. SYSDATETIME() vs GETDATE() i SQL Server:Hvad er forskellen?

  2. SQL Server 2016:Opret et forhold

  3. Oracle SQL-udvikler:Fejl - Test mislykkedes:Netværksadapteren kunne ikke etablere forbindelsen?

  4. Vil GETUTCDATE() returnere den samme værdi, hvis den bruges to gange i den samme sætning?