Saya mencoba mempelajari cara kerja aplikasi. Dan untuk ini saya memasukkan perintah debug sebagai baris pertama dari setiap tubuh fungsi dengan tujuan untuk mencatat nama fungsi serta nomor baris (di dalam kode) tempat saya mengirim pesan ke output log. Terakhir, karena aplikasi ini terdiri dari banyak file, saya ingin membuat satu file log sehingga saya dapat lebih memahami aliran kontrol aplikasi.
Inilah yang saya ketahui:
untuk mendapatkan nama fungsi, saya dapat menggunakan
function_name.__name__
tetapi saya tidak ingin menggunakan nama_fungsi (sehingga saya dapat dengan cepat menyalin dan menempelkan generikLog.info("Message")
di badan semua fungsi). Saya tahu ini bisa dilakukan di C menggunakan__func__
makro tetapi saya tidak yakin tentang python.untuk mendapatkan nama file dan nomor baris, saya telah melihat itu (dan saya percaya bahwa) aplikasi saya menggunakan
locals()
fungsi Python tetapi dalam sintaks yang saya tidak sepenuhnya sadari misalnya:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
dan saya mencobanya menggunakan likeLOG.info("My message %s" % locals())
yang menghasilkan sesuatu seperti{'self': <__main__.Class_name object at 0x22f8cd0>}
. Ada masukan tentang ini?Saya tahu bagaimana menggunakan logging dan menambahkan handler ke dalamnya untuk login ke sebuah file tapi saya tidak yakin apakah satu file dapat digunakan untuk merekam semua pesan log dalam urutan yang benar dari pemanggilan fungsi dalam proyek.
Saya akan sangat menghargai bantuan apa pun.
Terima kasih!
import pdb; pdb.set_trace()
, lalu menelusuri kode secara interaktif. Itu dapat membantu Anda melacak aliran program.