Tôi đang cố gắng tìm hiểu cách hoạt động của một ứng dụng. Và đối với điều này, tôi đang chèn các lệnh gỡ lỗi dưới dạng dòng đầu tiên của nội dung mỗi hàm với mục tiêu ghi lại tên của hàm cũng như số dòng (trong mã) nơi tôi gửi thông báo đến đầu ra nhật ký. Cuối cùng, vì ứng dụng này bao gồm nhiều tệp, tôi muốn tạo một tệp nhật ký duy nhất để tôi có thể hiểu rõ hơn về luồng điều khiển của ứng dụng.
Đây là những gì tôi biết:
để lấy tên hàm, tôi có thể sử dụng
function_name.__name__
nhưng tôi không muốn sử dụng tên hàm (để tôi có thể nhanh chóng sao chép và dán một tên chungLog.info("Message")
vào nội dung của tất cả các hàm). Tôi biết điều này có thể được thực hiện trong C bằng cách sử dụng__func__
macro nhưng tôi không chắc chắn về python.để lấy tên tệp và số dòng, tôi đã thấy rằng (và tôi tin rằng) ứng dụng của tôi đang sử dụng
locals()
hàm Python nhưng theo một cú pháp mà tôi không hoàn toàn biết, ví dụ:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
và tôi đã thử sử dụng hàm likeLOG.info("My message %s" % locals())
mà tạo ra một cái gì đó như thế nào{'self': <__main__.Class_name object at 0x22f8cd0>}
. Bất kỳ đầu vào này xin vui lòng?Tôi biết cách sử dụng ghi nhật ký và thêm trình xử lý vào nó để đăng nhập vào một tệp nhưng tôi không chắc liệu một tệp duy nhất có thể được sử dụng để ghi lại tất cả các thông báo nhật ký theo đúng thứ tự của các lệnh gọi hàm trong dự án hay không.
Tôi sẽ đánh giá rất cao bất kỳ sự giúp đỡ nào.
Cảm ơn!
import pdb; pdb.set_trace()
, sau đó chuyển qua mã một cách tương tác. Điều đó có thể giúp bạn theo dõi luồng chương trình.