Ghi nhật ký
Python đã có một mô-đun đăng nhập tích hợp tuyệt vời . Bạn có thể muốn sử dụng mẫu đăng nhập ở đây .
Mô-đun đăng nhập cho phép bạn xác định mức độ quan trọng; trong quá trình gỡ lỗi, bạn có thể ghi nhật ký mọi thứ, trong khi hoạt động bình thường, bạn chỉ có thể ghi nhật ký những điều quan trọng. Bạn có thể tắt và bật mọi thứ.
Hầu hết mọi người chỉ sử dụng các câu lệnh in cơ bản để gỡ lỗi, và sau đó loại bỏ các câu lệnh in. Tốt hơn là để chúng vào, nhưng vô hiệu hóa chúng; sau đó, khi bạn gặp một lỗi khác, bạn có thể kích hoạt lại mọi thứ và xem nhật ký của mình.
Đây có thể là cách tốt nhất có thể để gỡ lỗi các chương trình cần thực hiện nhanh chóng, chẳng hạn như các chương trình mạng cần phản hồi trước khi đầu kia của kết nối mạng hết thời gian và biến mất. Bạn có thể không có nhiều thời gian để một bước gỡ lỗi; nhưng bạn chỉ có thể để mã của mình chạy và ghi nhật ký mọi thứ, sau đó xem qua nhật ký và tìm hiểu điều gì đang thực sự xảy ra.
EDIT: URL ban đầu cho các mẫu là: http://aymanh.com/python-debugging-t kỹ thuật
Trang này bị thiếu nên tôi đã thay thế nó bằng một tham chiếu đến ảnh chụp nhanh được lưu trữ tại archive.org: http://web.archive.org/web/20120819135307/http://aymanh.com/python-debugging-t kỹ thuật
Trong trường hợp nó biến mất một lần nữa, đây là các mẫu tôi đã đề cập. Đây là mã được lấy từ blog; Tôi đã không viết nó.
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()
Và đây là lời giải thích của ông về cách sử dụng ở trên. Một lần nữa, tôi không nhận được tín dụng cho việc này:
Theo mặc định, mô-đun đăng nhập in các thông báo quan trọng, lỗi và cảnh báo. Để thay đổi điều này sao cho tất cả các cấp được in, hãy sử dụng:
$ ./your-program.py --logging=debug
Để gửi thông điệp tường trình đến một tệp có tên debug.log, hãy sử dụng:
$ ./your-program.py --logging-level=debug --logging-file=debug.log