- 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í.