2012-08-08 41 views
11

Tôi đang chạy một dự án Django đơn giản trên Heroku. Nó hoạt động, nhưng nếu tôi nhận được một lỗi máy chủ nó không cung cấp cho tôi bất kỳ chi tiết nào trong nhật ký. Điều này làm cho các lỗi rất khó xử lý.Nhật ký Heroku cho dự án Django thiếu lỗi

Bây giờ tôi đã thiết lập máy chủ dàn dựng và nó có cùng vấn đề - các trang không thành công và tôi không nhận được bất kỳ phản hồi nào về lý do.

log $ Heroku

...

2012-08-08T13:55:58+00:00 app[web.1]: Development server is running at http://0.0.0.0:59048/ 
2012-08-08T13:55:59+00:00 heroku[web.1]: State changed from starting to up 
2012-08-08T13:56:01+00:00 heroku[router]: GET [xxx].herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=22ms status=500 bytes=27 
2012-08-08T13:56:01+00:00 app[web.1]: [08/Aug/2012 14:56:01] "GET/HTTP/1.1" 500 27 
2012-08-08T13:56:02+00:00 heroku[router]: GET [xxx].herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=6ms status=500 bytes=27 
2012-08-08T13:56:09+00:00 heroku[router]: GET[xxx].herokuapp.com/admin dyno=web.1 queue=0 wait=0ms service=2ms status=301 bytes=0 
2012-08-08T13:56:09+00:00 app[web.1]: [08/Aug/2012 14:56:09] "GET /admin HTTP/1.1" 301 0 
2012-08-08T13:56:10+00:00 heroku[router]: GET [xxx].herokuapp.com/admin/ dyno=web.1 queue=0 wait=0ms service=224ms status=500 bytes=27 
2012-08-08T13:56:10+00:00 app[web.1]: [08/Aug/2012 14:56:10] "GET /admin/ HTTP/1.1" 500 27 
2012-08-08T13:56:10+00:00 heroku[router]: GET [xxx].herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=6ms status=500 bytes=27 

Như bạn thấy, các trang đang quay trở lại như 500, nhưng tôi không nhận được bất kỳ thông tin stack trace hoặc tương đương.

Các sự cố có thể được chỉ báo bằng: 'Máy chủ phát triển đang chạy lúc ...' - điều này có ý nghĩa gì và ảnh hưởng đến việc ghi nhật ký lỗi?

Ngoài ra, tôi đang sử dụng tệp mẫu '500.html' để xác định trang lỗi 500 tùy chỉnh. Điều này có thể được ẩn lỗi bằng cách nào đó? Nó thực sự không nên.

Hoặc tôi có cần tìm một địa điểm khác cho các nhật ký với Django trên Heroku không?

Cảm ơn!

Trả lời

9

Có vẻ như nó đơn giản là một vấn đề gây ra bởi kỳ vọng rằng Django dưới Heroku sẽ hoạt động như Rails. Tôi ngớ ngẩn quá.

Đối với bất cứ ai khác bị vấn đề này khi di chuyển từ một khuôn khổ/ngôn ngữ khác:

  • Khi debug tắt, Django sử dụng logger Python tiêu chuẩn để xử lý các lỗi trong các mã.
  • Có thiết lập mặc định ở cuối settings.py email mà trang web quản trị khi có lỗi. Tốt đẹp. Nó cần một loạt các địa chỉ email trong biến ADMINS trong settings.py để làm việc.
  • Lỗi được gửi, theo mặc định, tới STDERR thay vì STDOUT, vì vậy chúng sẽ không hiển thị trong nhật ký. Điều này có thể được thay đổi rõ ràng. Hãy thử đây nếu bạn muốn hành vi này:

    http://codeinthehole.com/writing/console-logging-to-stdout-in-django/

+1

Tài liệu của Heroku chỉ ra rằng họ sẽ đăng nhập cả hai stderr và stdout ... Tôi tự hỏi nếu điều này được sử dụng để được khác nhau khi bạn trả lời này và bây giờ đã thay đổi? https: //devcenter.heroku.com/articles/logging # write-to-your-log Tôi đoán tôi có thể kiểm tra nó. –

+0

Vấn đề tôi đã không phải với Heroku, mà làm việc như tôi mong đợi. Đó là với Django, mà không làm việc như Rails nào. Có lẽ hiển nhiên. –

0

Hành vi này được đặt bởi máy chủ (ví dụ: gunicorn), không phải Django hoặc Heroku.

Thường có dòng lệnh hoặc cấu hình thay đổi cấp độ nhật ký mặc định.

+1

Ah, sau đó cài đặt Heroku mặc định không hiển thị dấu vết ngăn xếp? Cảm ơn, điều này mang lại cho tôi một hướng để thử. Nếu hiệu quả, tôi sẽ giải thích về giải pháp của tôi và chấp nhận. –

+1

OK, tôi đã thử sử dụng gunicorn và thiết lập mức ghi nhật ký để gỡ lỗi. Không có con xúc xắc. Đang cập nhật câu hỏi chính. –

+0

Khi tôi phát hiện ra, hành vi được thiết lập bởi Django bằng cách sử dụng các thiết lập đăng nhập ở dưới cùng của settings.py. Đây là một chút mờ đục lúc đầu, nhưng tôi hiểu đó là một thiết lập chuẩn logger Python vì vậy sẽ có rất nhiều trợ giúp trên internet. –

-3

Điều này có thể được giải quyết chỉ bằng cách thay đổi DEBUG của bạn trong tập tin settings.py của bạn. DEBUG = True

Các vấn đề liên quan