Bagaimana saya bisa menggunakan modul logging dengan Python untuk menulis ke file? Setiap kali saya mencoba menggunakannya, itu hanya mencetak pesannya.
128
Contoh penggunaan logging.basicConfig
daripadalogging.fileHandler()
logging.basicConfig(filename=logname,
filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
logging.info("Running Urban Planning")
self.logger = logging.getLogger('urbanGUI')
Secara berurutan, lima bagian tersebut melakukan hal berikut:
filename=logname
)filemode='a'
)format=...
)datefmt='%H:%M:%S'
)level=logging.DEBUG
).
if __name__ == '__main__':
jika berjalan pada apacheif __name__ == '__main__':
ini tidak dijalankan.Diambil dari " buku masak logging ":
Dan Anda siap untuk pergi.
PS Pastikan untuk membaca HOWTO logging juga.
sumber
logger.warning("message")
, tidak dapat menggunakanlogger.info("message")
ataulogger.debug("message")
. Itu agak mengganggu.logger.setLevel(logging.DEBUG)
. Logger dapat dikonfigurasi dengan banyak penangan; tingkat yang dikonfigurasi di pencatat menentukan pesan log tingkat keparahan mana yang akan dikirim ke setiap penangannya, & tingkat yang disetel di penangan menentukan tingkat mana yang akan diproses oleh penangan. Perhatikan bahwa mereka yang ingin mencetak pesan info hanya perlu menyetelnya keINFO
logger dan handler.logger.setLevel(logging.DEBUG)
- terima kasih atas komentarnyaSaya lebih suka menggunakan file konfigurasi. Ini memungkinkan saya untuk mengganti level logging, lokasi, dll tanpa mengubah kode ketika saya beralih dari pengembangan ke rilis. Saya hanya mengemas file konfigurasi yang berbeda dengan nama yang sama, dan dengan logger yang didefinisikan sama.
Ini kode saya untuk file konfigurasi log
sumber
%%
dalam Python 3. misalnyatime.strftime("%%Y%%m%%D")
http://docs.python.org/library/logging.html#logging.basicConfig
sumber
logging
Dokumentasi modul resmi memungkinkan untuk ini. Anda bahkan dapat memilih log apa yang masuk ke terminal dan mana yang masuk ke dalam file, dan banyak lagi aplikasi menarik. docs.python.org/3/howto/…inilah cara yang lebih sederhana untuk melakukannya. solusi ini tidak menggunakan kamus konfigurasi dan menggunakan penangan file rotasi, seperti:
atau seperti ini:
variabel penangan harus iterable. logpath + nama file dan debug_level hanyalah variabel yang menyimpan info masing-masing. tentu saja, nilai untuk parameter fungsi terserah Anda.
pertama kali saya menggunakan modul logging saya membuat kesalahan dengan menulis berikut ini, yang menghasilkan kesalahan kunci file OS (di atas adalah solusi untuk itu):
dan Bob adalah pamanmu!
sumber
http://docs.python.org/library/logging.handlers.html#filehandler
sumber
FileHandler
untuk berbagai situasi juga. (WatchedFileHandler
,,RotatingFileHandler
dll.)sumber
sumber
Deskripsi Format
Cara menelepon yang normal
Keluaran
Menggunakan Dict, nilai panggilan
otherMod2.py
Keluaran
sumber