pengaturan log_min_duration_statement diabaikan

15

Saya berjalan Postgresql 9.1di Ubuntu. Versi Postgresql yang tepat adalah 9.1+129ubuntu1seperti yang ditunjukkan oleh manajer paket saya.

Saya memiliki 2 database yang aktif digunakan dan mereka digunakan dari server jauh.

Saya ingin mencatat pertanyaan yang memiliki waktu eksekusi yang lama. Jadi saya mengatur parameter berikut dalam /etc/postgresql/9.1/main/postgresql.conffile

log_min_duration_statement = 10000
log_statement = 'mod'

jadi Postgresql akan mencatat pertanyaan yang membutuhkan waktu lebih dari 10 detik.

Tetapi ketika saya reloadkonfigurasi postgres, Postgresql mulai mencatat setiap permintaan yang sesuai dengan log_statementnilai. Bahwa saya mengatur durasi ke 100 detik untuk memastikan

log_min_duration_statement = 100000

Tapi Postgresql tetap mencatat setiap kueri yang sesuai dengan log_statementnilai, apa pun log_min_duration_statementnilainya.

Pengaturan log_statementuntuk nonetampak berhenti logging.

Apakah ada sesuatu yang saya lewatkan tentang konfigurasi?

FallenAngel
sumber
Masalahnya adalah bahwa Anda mencatat gabungan dari dua set, bukan persimpangan itu. Saya tidak tahu apakah itu bisa dilakukan sesuka Anda.
dezso
Jadi, haruskah saya menonaktifkan (komentar) log_statementjadi log_min_duration_statementharus bekerja?
FallenAngel
Jika Anda hanya ingin mencatat semua pernyataan yang sudah berjalan lama (baik itu SELECT, UPDATEatau beberapa DDL), maka ya.
dezso

Jawaban:

21

Anda sudah dekat. Ide terakhir Anda sebenarnya adalah cara untuk pergi:

log_statement = none
log_min_duration_statement = 10000

Maka tidak ada pernyataan yang akan dicatat, kecuali yang berjalan lebih dari 10 detik - termasuk string kueri itu sendiri. Penebangan mungkin tampaknya berhenti karena 10 detik adalah ambang batas tinggi. Saya menggunakan 2 detik secara normal, tetapi YMMV.

Jawaban terkait ini di SO memiliki lebih:
Tidak bisa log_min_duration_statement berfungsi

Erwin Brandstetter
sumber
3
Izinkan saya menambahkan bahwa default untuk log_statementadalah none, jadi tidak mengaturnya atau pengaturan untuk nonememiliki efek yang sama.
dezso