Làm cách nào để tôi có được Django 1.0 để viết tất cả lỗi vào bảng điều khiển hoặc tệp nhật ký khi chạy máy chủ chạy trong chế độ gỡ lỗi?Đăng nhập tất cả lỗi vào bảng điều khiển hoặc tệp trên trang Django
Tôi đã cố gắng sử dụng một lớp trung gian với chức năng process_exception như mô tả trong câu trả lời chấp nhận cho câu hỏi này:
How do you log server errors on django sites
Chức năng process_exception được gọi là đối với một số trường hợp ngoại lệ (ví dụ: assert (False) trong views.py) nhưng process_exception không nhận được các lỗi khác như ImportErrors (ví dụ: import thisclassdoesnotexist trong urs.py). Tôi mới dùng Django/Python. Đây có phải là do sự khác biệt giữa các lỗi thời gian chạy và biên dịch không? Nhưng sau đó tôi sẽ mong đợi máy chủ để khiếu nại nếu nó là một lỗi thời gian biên dịch và nó không.
Tôi đã xem bản trình bày tuyệt vời của Simon Willison về gỡ lỗi Django (http://simonwillison.net/2008/May/22/debugging/) nhưng tôi không thấy tùy chọn nào có hiệu quả đối với tôi.
Trong trường hợp nó có liên quan, tôi đang viết một ứng dụng Facebook và Facebook mặt nạ HTTP 500 lỗi với thông điệp riêng của họ chứ không hiển thị trang 500 thông tin awesomely của Django. Vì vậy, tôi cần một cách cho tất cả các loại lỗi được ghi vào bảng điều khiển hoặc tệp.
Chỉnh sửa: Tôi đoán kỳ vọng của tôi là nếu Django có thể trả lại trang lỗi 500 với nhiều chi tiết khi tôi nhập không hợp lệ (ImportError) trong urls.py, nó sẽ có thể viết cùng một chi tiết bảng điều khiển hoặc tệp mà không phải thêm bất kỳ xử lý ngoại lệ bổ sung nào vào mã. Tôi chưa bao giờ thấy xử lý ngoại lệ xung quanh các câu lệnh nhập khẩu.
Cảm ơn, Jeff
DEBUG_PROPOGATE_EXCEPTIONS = True hoạt động chính xác như tôi cần - nó đổ ngăn xếp vào giao diện điều khiển máy chủ. Và nó thậm chí không chấm dứt ứng dụng! – jlpp
Nó được viết là 'DEBUG_PROPAGATE_EXCEPTIONS'. – akaihola