Log Dosyalarının Bakımı
# 1. Postgresql gömülü (built-in) logrotate logging_collector=true log_destination = stderr log_filename = postgresql-%a.log log_truncate_on_rotation = on log_rotation_size = 0 log_rotation_age = 1d log_directory = log # 2. Harici bir logrotate aracı kullanılabilir. pg_ctl start | rotatelogs /var/log/postgresql.log 86400 # 3. syslog sunucusuna ya da elastic search sunucusuna yönlendirilebilir. log_destination = syslog
Loglar hata analizi yaparken çok önemlidir. Bu yüzden belirli bir süre saklanması
hayati önem taşır. stderr ile loglar bir dosyaya yönlendirildi ise bu log dosyası sadece
instance kapatılıp açıldığında resetlenerek (truncate) dosya boyutu sıfırlanabilir. Yıllarca
kapanmayan veritabanlarını düşündüğümüzde bu dosya çok büyük boyutlara ulaşıp
diski doldurabilir ve instance’ı durdurabilir. Bu yüzden belirli aralıklarla rotasyona ihtiyaç
vardır.
Rotasyon için postgresql’in gömülü (built-in) gelen aracı, harici bir yazılım veya syslog
sunucu kullanılabilir.
Yukarıda verilen 1. örnekte built-in rotasyon aracı kullanılmıştır. $PGDATA/log dizinine
postgresql-$day.log her günün logunu ayrı ayrı yazar. Böylece son 7 gününün loguna
erişilebilir ve fazla disk kullanımının önüne geçilmiş olur. CSV formatını destekler.
- Örnekte Apache’ nin rotatelogs ile rotasyon kullanılmış. Log dosyaları günlük
resetlenir. - Örnekte ise loglar syslog sunucusuna yönlendirilmiştir. İşletim sisteminde de ayara
ihtiyaç vardır.auth,authpriv.none -/var/log/syslog → /etc/rsyslog.d/50-default.conf. @syslogserver_IP:514 → /etc/rsyslog.conf
Not: Bunlara ek olarak unix/linux işletim sistemlerinde
“ > postgresql.log “ ile log dosyası truncate edilerek boyutu sıfırlanabilir. Bir
bash script yazılırak belirli bir boyutu geçtiğinde var log dosyası kopyalanıp yedeği
alındıktan sonra truncate ettirilebilir.
