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