Có lẽ nó không tồn tại, vì tôi không thể tìm thấy nó trong pydoc. Nhưng bằng cách sử dụng gói nhật ký của python, có cách nào để truy vấn một Trình ghi nhật ký để tìm ra số lần một hàm cụ thể được gọi không? Ví dụ: có bao nhiêu lỗi/cảnh báo đã được báo cáo?Đã bao nhiêu lần đăng nhập.error() được gọi là?
9
A
Trả lời
12
Mô-đun ghi nhật ký không xuất hiện để hỗ trợ điều này. Về lâu dài, có lẽ bạn nên tạo mô-đun mới và thêm tính năng này thông qua phân loại các mục trong mô-đun đăng nhập hiện có để thêm các tính năng bạn cần, nhưng bạn cũng có thể đạt được hành vi này khá dễ dàng với trình trang trí :
class callcounted(object):
"""Decorator to determine number of calls for a method"""
def __init__(self,method):
self.method=method
self.counter=0
def __call__(self,*args,**kwargs):
self.counter+=1
return self.method(*args,**kwargs)
import logging
logging.error=callcounted(logging.error)
logging.error('one')
logging.error('two')
print logging.error.counter
Output:
ERROR:root:one
ERROR:root:two
2
0
7
Bạn cũng có thể thêm một Handler mới cho logger mà tính tất cả các cuộc gọi:
class MsgCounterHandler(logging.Handler):
level2count = None
def __init__(self, *args, **kwargs):
super(MsgCounterHandler, self).__init__(*args, **kwargs)
self.level2count = {}
def emit(self, record):
l = record.levelname
if (l not in self.level2count):
self.level2count[l] = 0
self.level2count[l] += 1
Bạn có thể sau đó sử dụng đuôi dict erwards để xuất số lượng cuộc gọi.
Các vấn đề liên quan
- 1. bao nhiêu lần strlen() được gọi trong vòng lặp này?
- 2. Chương trình đã chạy bao nhiêu lần? C#
- 3. Cách tốt nhất để đếm bao nhiêu lần mỗi giây phương pháp này được gọi là
- 4. Bao nhiêu là PhoneGap được sử dụng
- 5. java: bao nhiêu lần là biểu hiện bộ sưu tập được đánh giá trong một "foreach"
- 6. GDB: Có lệnh nào cho phép bạn xem hàm được gọi bao nhiêu lần không?
- 7. Khi có nhiều cuộc gọi đến cùng một UDF trong một câu lệnh, nó sẽ được gọi bao nhiêu lần?
- 8. Phiên Meteor bao nhiêu là
- 9. Gọi phương thức đắt bao nhiêu .net
- 10. Bao nhiêu là 32 kB mã được biên dịch
- 11. Số hồ sơ này là bao nhiêu?
- 12. Vòng lặp này sẽ chạy bao nhiêu lần?
- 13. Akka - Bạn cần tạo bao nhiêu lần diễn viên?
- 14. Số 8e3 được đánh giá là bao nhiêu?
- 15. Bạn nên thực hiện bao nhiêu lần kiểm tra biến?
- 16. PlayN được Google hỗ trợ bao nhiêu?
- 17. Có cách nào để tìm ra bao nhiêu lần một lớp đã được khởi tạo trong php?
- 18. Khoản tiền khóa là bao nhiêu?
- 19. Có bao nhiêu thử nghiệm là đủ?
- 20. Chi phí '$ (this)' này là bao nhiêu?
- 21. có bao nhiêu múi giờ?
- 22. IMetadataAware.OnMetadataCreated không bao giờ được gọi là
- 23. OnInfoListener không bao giờ được gọi là
- 24. bộ nhớ php bao nhiêu là quá nhiều
- 25. surfaceCreated() Không bao giờ được gọi là
- 26. Các cuộc gọi hàm trong JavaScript tốn bao nhiêu?
- 27. Destructor không bao giờ được gọi là
- 28. onIabPurchaseFinishedListener không bao giờ được gọi là
- 29. onFinishInflate() không bao giờ được gọi là
- 30. JSF preRenderView được gọi là quá nhiều lần
Điều này lý tưởng đối với tôi. Câu trả lời trang trí che khuất tên hàm và số dòng thực sự nơi trình ghi nhật ký được gọi. Với một trình xử lý tùy chỉnh, nó hoạt động hoàn hảo. –