sql >> Databáze >  >> RDS >> PostgreSQL

Jak protokolovat dotazy v PostgreSQL

  • Umístění konfiguračního souboru
    • Vyhledejte cestu k datovému adresáři
  • Konfigurace PostgreSQL pro generování výstupu protokolu
    • Restartujte službu PostgreSQL
  • Ověření generování protokolu

Povolení protokolování v PostgreSQL je velmi snadné změnou několika konfiguračních nastavení a restartováním serveru. I když lze tato nastavení změnit „v paměti“, a tím umožnit dočasné protokolování pouze pro konkrétní relaci klienta, v tomto tutoriálu se podíváme na to, jak nakonfigurovat postgres, aby trvale vytvářel iterativní soubory protokolu pro všechny relace a připojení.

Vyhledání konfiguračního souboru

Pokud si nejste jisti, kde je postgresql.conf konfigurační soubor je umístěn, nejjednodušší metodou pro nalezení umístění je připojení ke klientovi postgres (psql ) a zadejte SHOW config_file; příkaz:

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

V tomto případě vidíme cestu k postgresql.conf soubor pro tento server je /etc/postgresql/9.3/main/postgresql.conf . Nyní stačí otevřít tento soubor pomocí vašeho oblíbeného textového editoru a můžeme začít měnit nastavení:

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

Vyhledejte cestu k datovému adresáři

Je také dobré potvrdit cestu k data adresář pro vaši instalaci postgres. To se bude hodit později a získání cesty je záležitostí dalšího jednoduchého SHOW prohlášení:

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

U některých instalací konfigurační soubor a data adresář bude na stejné cestě, zatímco v jiných (jako je tento příklad) se liší. V každém případě si tato data zkopírujte cestu k adresáři pro pozdější použití.

Konfigurace PostgreSQL pro generování výstupu protokolu

Pomocí souboru postgresql.conf otevřete soubor, přejděte dolů na ERROR REPORTING AND LOGGING a pravděpodobně uvidíte komentovanou řadu možností konfigurace. Nejkritičtější z těchto nastavení jsou log_destination a logging_collector . Níže jsou doporučená nastavení, ale můžete je změnit tak, aby vyhovovala vašim vlastním potřebám:

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

Zde říkáme postgresu, aby generoval protokoly v CSV formát a pro jejich výstup do pg_log adresář (v rámci data adresář). Také jsme zrušili komentář u souboru log_filename nastavení pro vytvoření nějakého správného jména včetně časových razítek pro soubory protokolu.

Podrobné informace o všech těchto nastaveních naleznete v official documentation .

Restartujte službu PostgreSQL

Posledním krokem je restartování služby PostgreSQL, aby tato nastavení, zejména logging_collector , vstoupí v platnost. Provedení postgresového restartu se bude lišit systém od systému, ale typicky pro unixový systém bude příkaz vypadat nějak takto:

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

Ověřování generování protokolu

Jakmile je systém restartován, protokolování by mělo začít okamžitě. Abyste se ujistili, že tomu tak je, přejděte do data/pg_log adresář vaší instalace postgres. Pamatujte, že jsme získali data cestu k adresáři dříve, takže jednoduše přejděte do tohoto adresáře přidáním /pg_log až na konec, abyste se dostali do adresáře log:

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

Nyní vypište soubory a měli byste vidět, že po předchozím restartu služby byl vytvořen soubor protokolu:

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

Tady to máme; automaticky generované soubory protokolu jsou povoleny s PostgreSQL změnou pouze několika konfiguračních nastavení.


  1. Existuje časový limit pro nečinná připojení PostgreSQL?

  2. Procházejte sloupce RECORD

  3. Barman 2.11:barman-cloud-restore a barman-cloud-wal-restore

  4. Příklady převodu „smalldatetime“ na „datetime“ v SQL Server (T-SQL)