Tôi muốn kiểm tra lỗi trong tệp nền cụ thể, nhưng luồng lỗi chuẩn đang được chương trình kiểm soát ở nền trước và lỗi trong tệp trong câu hỏi không đang được hiển thị. Tuy nhiên, tôi có thể sử dụng mô-đun logging
và ghi đầu ra vào tệp. Tôi đã tự hỏi làm thế nào tôi có thể sử dụng này để đăng nhập tất cả các trường hợp ngoại lệ, lỗi và tracebacks của họ.Sử dụng mô đun ghi của python để ghi lại tất cả ngoại lệ và lỗi
Trả lời
Có thể là một ý tưởng tồi khi đăng nhập bất kỳ trường hợp ngoại lệ nào được ném trong chương trình, vì Python cũng sử dụng ngoại lệ cho luồng điều khiển thông thường.
Do đó, bạn chỉ nên ghi lại vô tình ngoại lệ. Bạn có thể dễ dàng làm điều này bằng cách sử dụng một logger's exception()
method, một khi bạn có một đối tượng ngoại lệ.
Để xử lý tất cả các trường hợp ngoại lệ còn tự do, bạn có thể quấn điểm vào tập lệnh của bạn trong một khối try...except
, hoặc bằng cách cài đặt một handler ngoại lệ tùy chỉnh bằng cách tái gán sys.excepthook()
:
import logging
import sys
logger = logging.getLogger('mylogger')
# Configure logger to write to a file...
def my_handler(type, value, tb):
logger.exception("Uncaught exception: {0}".format(str(value)))
# Install exception handler
sys.excepthook = my_handler
# Run your main script here:
if __name__ == '__main__':
main()
Cảm ơn! Đây chính xác là những gì tôi cần. –
Không phải là ý tưởng tốt để nối thêm 'sys .__ excepthook __ (loại, giá trị, tb)' vào 'my_handler' của bạn, để nó có thể xử lý các hành động mặc định trên ngoại lệ? – troyane
@Ferdinand Beyer: Gọn gàng. Có 'logger.exception (" Ngoại lệ không bắt buộc: {0}: {1} ". Định dạng (str (giá trị ___ lớp __.__ name__), str (giá trị)))' cho trong trường hợp của tôi 'LRI - Ngoại lệ không bắt buộc: IndexError: list lập chỉ mục ra khỏi phạm vi' và in vì một số lý do 'Không có'. Làm thế nào để tôi cũng có được traceback đầy đủ? 'tb' có vẻ là một đối tượng traceback nhưng' traceback.print_tb (tb) 'cũng chỉ phát ra' None'. – bioslime
- 1. Spring MVC không ghi lại tất cả ngoại lệ
- 2. Làm cách nào để ghi lại mô-đun bằng Python?
- 3. Mô-đun và trường ghi
- 4. Ghi nhật ký tất cả ngoại lệ trong ứng dụng pyqt4
- 5. Ghi nhật ký ngoại lệ bằng cách sử dụng Log4Net
- 6. Bắt tất cả ngoại lệ trong Python
- 7. Điều gì cần ghi lại khi ngoại lệ xảy ra?
- 8. Cách sử dụng tệp pom chính để kiểm tra tất cả các mô-đun của ứng dụng web và xây dựng tất cả các mô-đun
- 9. Làm cách nào để ghi lại ngoại lệ bằng Sphinx
- 10. Spring - slf4J: cách tự động ghi lại các lỗi và ngoại lệ?
- 11. Làm thế nào để cấu hình Airbrake gem để ghi lại tất cả các ngoại lệ Rails trong cả môi trường phát triển và sản xuất?
- 12. Mô-đun ghi nhật ký nào để sử dụng trong AnyEvent của Perl?
- 13. Ghi ngoại lệ trong chủ đề xoay
- 14. Ghi nhãn ngoại lệ hộp trong R
- 15. ngoại lệ ghi nhật ký trong C#
- 16. Đầu ra nhật ký trùng lặp khi sử dụng mô-đun ghi nhật ký Python
- 17. Ghi nhật ký ngoại lệ SignalR?
- 18. Phát hiện và ghi lại âm thanh bằng Python
- 19. Ghi đè ngoại lệ Symfony 2?
- 20. URL IIS ghi lại url của mô-đun thành chữ thường
- 21. Ghi lại tất cả các tương tác mạng của ứng dụng Java
- 22. Xóa tất cả thẻ javascript và thẻ kiểu từ html bằng python và mô-đun lxml
- 23. Ghi đè một hàng cụ thể trong tệp csv bằng mô-đun CSV của Python
- 24. Làm cách nào để ghi lại các lớp học mà không có tên mô-đun?
- 25. Chuyển đổi thông tin ngoại lệ Python thành chuỗi để ghi nhật ký
- 26. Cách định cấu hình tất cả các trình ghi nhật ký trong một ứng dụng
- 27. Tìm tên mô-đun của ngoại lệ có nguồn gốc bằng Python
- 28. Python mô-đun toán
- 29. Làm cách nào để nhận urllib2 ghi lại TẤT CẢ byte đã chuyển
- 30. Một trình xử lý ngoại lệ cho tất cả các ngoại lệ của CLASS
có thể trùng lặp của [Logging ngoại lệ còn tự do trong Python] (http://stackoverflow.com/questions/6234405/logging-uncaught-exceptions-in-python) –