Penebangan
Python sudah memiliki modul logging bawaan yang luar biasa . Anda mungkin ingin menggunakan templat pendataan di sini .
Modul logging memungkinkan Anda menentukan tingkat kepentingan; selama debugging Anda dapat mencatat semuanya, sementara selama operasi normal Anda mungkin hanya mencatat hal-hal penting. Anda dapat mematikan dan menghidupkan berbagai hal.
Kebanyakan orang hanya menggunakan pernyataan cetak dasar untuk debug, dan kemudian menghapus pernyataan cetak. Lebih baik meninggalkannya, tetapi nonaktifkan; kemudian, ketika Anda memiliki bug lain, Anda bisa mengaktifkan kembali semuanya dan melihat log Anda.
Ini bisa menjadi cara terbaik untuk men-debug program yang perlu melakukan sesuatu dengan cepat, seperti program jaringan yang perlu merespons sebelum ujung koneksi jaringan yang lain mati dan hilang. Anda mungkin tidak punya banyak waktu untuk satu langkah debugger; tetapi Anda bisa membiarkan kode Anda berjalan, dan mencatat semuanya, lalu memeriksa log dan mencari tahu apa yang sebenarnya terjadi.
EDIT: URL asli untuk templat adalah: http://aymanh.com/python-debugging-techniques
Halaman ini tidak ada sehingga saya menggantinya dengan referensi ke snapshot yang disimpan di archive.org: http://web.archive.org/web/20120819135307/http://aymanh.com/python-debugging-techniques
Jika hilang lagi, berikut adalah templat yang saya sebutkan. Ini kode yang diambil dari blog; Saya tidak menulisnya.
import logging
import optparse
LOGGING_LEVELS = {'critical': logging.CRITICAL,
'error': logging.ERROR,
'warning': logging.WARNING,
'info': logging.INFO,
'debug': logging.DEBUG}
def main():
parser = optparse.OptionParser()
parser.add_option('-l', '--logging-level', help='Logging level')
parser.add_option('-f', '--logging-file', help='Logging file name')
(options, args) = parser.parse_args()
logging_level = LOGGING_LEVELS.get(options.logging_level, logging.NOTSET)
logging.basicConfig(level=logging_level, filename=options.logging_file,
format='%(asctime)s %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# Your program goes here.
# You can access command-line arguments using the args variable.
if __name__ == '__main__':
main()
Dan inilah penjelasannya tentang cara menggunakan hal di atas. Sekali lagi, saya tidak mendapatkan kredit untuk ini:
Secara default, modul logging mencetak pesan kritis, kesalahan, dan peringatan. Untuk mengubah ini sehingga semua level dicetak, gunakan:
$ ./your-program.py --logging=debug
Untuk mengirim pesan log ke file bernama debug.log, gunakan:
$ ./your-program.py --logging-level=debug --logging-file=debug.log