2012-11-04 44 views
6

Tôi đã cố gắng để làm việc này từ lâu nhưng giờ đây tôi thực sự đã hết trí. Tôi đã cố gắng để làm tất cả mọi thứ mà tôi có thể tìm thấy trên tài liệu SO và bình và tôi vẫn không thể đăng nhập một lỗi đơn giản làm việc để tôi có thể gỡ lỗi applcation của tôi. Bên dưới là mã được dán -lỗi ghi nhật ký với mod_wsgi

# main.py 
from flask import Flask 
import logging 

app = Flask(__name__) 
file_handler = logging.FileHandler(filename='/tmp/election_error.log') 
file_handler.setLevel(logging.WARNING) 
app.logger.addHandler(file_handler) 

@app.route('/') 
def hello(): 
    return "hello 
    #missing quotes to generate error 

if __name__ == "__main__": 
    app.run() 


#wsgi file 
import sys 
import logging 
sys.path.insert(0, "/var/www/voting_app") 
logging.basicConfig(stream=sys.stderr) 
from main import app as application 


# apache2 conf file 
WSGIDaemonProcess voting_app threads=5 
WSGIScriptAlias /election /var/www/voting_app/voting_app.wsgi 

LogLevel info 

<Directory /var/www/voting_app> 
     WSGIProcessGroup voting_app 
     WSGIApplicationGroup %{GLOBAL} 
     Order deny,allow 
     Allow from all 
</Directory> 

Hãy cho tôi biết tôi đang đi đâu sai. Cảm ơn bạn rất nhiều.

Trả lời

3

Bạn sẽ cần tạo một ngoại lệ thời gian chạy ngoại trừ không phải là ngoại lệ thời gian biên dịch. Một trích dẫn mất tích là một ngoại lệ thời gian biên dịch và mã đăng nhập của bạn sẽ không bao giờ được thực thi.

Chỉ cần tăng một ngoại lệ thay vì: thất bại

@app.route('/') 
def hello(): 
    raise Exception('Deliberate exception raised') 
+0

Hoạt động này! Nhưng còn những lỗi khác. Đây là một main.py dummy tôi tạo ra. Tôi là một trong những tôi đã đưa ra một lỗi 500 nhưng các tập tin đăng nhập có vẻ trống rỗng? Tôi có thể làm gì để nắm bắt tất cả các loại lỗi như nó hiển thị trên máy chủ phát triển! Cảm ơn – Prakhar

+0

@Prakhar: bạn có thể chụp * hầu hết các ngoại lệ *. Chỉ cần không phải lỗi cú pháp, kiểm tra mã của bạn trước khi triển khai để nắm bắt chúng. –

+0

Nếu bạn vẫn thấy lỗi 500 trong quá trình sản xuất, thì mã bình của bạn không được chạy; đó có thể là lỗi cấu hình hoặc lỗi cú pháp và bạn không thể bắt được những lỗi như thế này. Kiểm tra nhật ký của máy chủ WSGI của bạn. –

5

Các lỗi cụ thể mà bạn tạo ra, đó là một lỗi cú pháp, có thể khiến một trong những tập tin WSGI kịch bản để thậm chí tải trong mod_wsgi. Lỗi này sẽ kết thúc trong tệp nhật ký lỗi Apache, không phải tệp nhật ký bạn đang thiết lập bằng mô-đun ghi nhật ký. Bạn đã xem tệp nhật ký lỗi Apache chưa?

Đối với ngoại lệ được nêu trong khi thực hiện yêu cầu, Flask theo mặc định sẽ biến nó thành trang lỗi 500 và nếu không thì sẽ hiển thị chi tiết. Bạn cần phải thiết lập Flask để gửi thư hoặc đăng nhập ngoại lệ thời gian chạy như vậy theo những cách khác mỗi:

http://flask.pocoo.org/docs/errorhandling/

Nếu bạn muốn có một ngoại lệ thời gian chạy sẽ được hiển thị trong trang 500 trả lại trình duyệt cho các mục đích phát triển, bạn cần để bật chế độ gỡ lỗi Flask. Này được thực hiện bằng cách thiết lập app.debug sẽ được True:

http://flask.pocoo.org/docs/config/?highlight=app%20debug

Bạn không nên có chế độ gỡ lỗi kích hoạt trên một người dùng phải đối mặt với hệ thống sản xuất.

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