Saya memiliki proyek python kecil yang memiliki struktur berikut -
Project
-- pkg01
-- test01.py
-- pkg02
-- test02.py
-- logging.conf
Saya berencana untuk menggunakan modul logging standar untuk mencetak pesan ke stdout dan file log. Untuk menggunakan modul logging, diperlukan beberapa inisialisasi -
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('pyApp')
logger.info('testing')
Saat ini, saya melakukan inisialisasi ini di setiap modul sebelum saya mulai mencatat pesan. Apakah mungkin untuk melakukan inisialisasi ini hanya sekali di satu tempat sehingga pengaturan yang sama digunakan kembali dengan masuk ke seluruh proyek?
package/__init__.py
. Itu biasanya bukan tempat Anda meletakkan if __name__ == '__main__'
kode. Juga, contoh prost kelihatannya akan memanggil kode konfigurasi tanpa syarat pada impor, yang tidak cocok untuk saya. Secara umum, kode konfigurasi logging harus dilakukan di satu tempat dan tidak boleh terjadi sebagai efek samping dari impor kecuali ketika Anda mengimpor __main__.
if __name__ == '__main__'
? (tidak disebutkan secara eksplisit dalam pertanyaan jika ini masalahnya)
fileConfig
setiap modul yang melakukan logging, kecuali Anda memilikiif __name__ == '__main__'
logika di dalamnya. Jawaban prost bukanlah praktik yang baik jika paket tersebut adalah pustaka, meskipun mungkin cocok untuk Anda - seseorang tidak boleh mengonfigurasi login dalam paket pustaka, selain menambahkan aNullHandler
.