2013-05-24 22 views
9

Tôi muốn đăng nhập stdout & stderr để ghi tệp và đây là những gì tôi đã thử.Cách thêm stdout và stderr vào tệp nhật ký trong bình

app = Flask(__name__) 
app.logger.setLevel(logging.INFO) # use the native logger of flask 
app.logger.disabled = False 
handler = logging.handlers.RotatingFileHandler(
    SYSTEM_LOG_FILENAME, 
    'a', 
    maxBytes=1024 * 1024 * 100, 
    backupCount=20 
    ) 

formatter = logging.Formatter(\ 
    "%(asctime)s - %(levelname)s - %(name)s: \t%(message)s") 
handler.setFormatter(formatter) 
app.logger.addHandler(handler) 

@app.route('/') 
def hello(): 

    return 'Hello World' 
if __name__ == '__main__': 
    app.run()   

Sau đó, tôi muốn ghi nhật ký đầu ra của bàn điều khiển vào tệp. chẳng hạn như

* Running on http://127.0.0.1:5000/ 
127.0.0.1 - - [24/May/2013 14:55:14] "GET/HTTP/1.1" 200 - 
127.0.0.1 - - [24/May/2013 14:55:14] "GET /favicon.ico HTTP/1.1" 404 - 

tôi có thể làm gì?

+0

Mã của bạn làm gì? – Blender

+0

Trên thực tế nó không làm gì ở đây, nhưng tôi đã cố gắng để đăng nhập stdout và stderr vào các tập tin. Và cũng có thể đăng nhập thông tin gỡ rối và lỗi vào các tệp – Kimmi

+0

Thay đổi 'logging.INFO' thành' logging.DEBUG'. Điều đó sẽ giúp bạn nhận được thông báo gỡ lỗi. – Blender

Trả lời

15

Các thông điệp logging bạn đề cập đến không đến từ logger bình, những come fromwerkzeug 's logger, có nghĩa là bạn cũng cần phải thêm điều khiển của bạn để mà dụ logger để làm cho nó hoạt động, ví dụ:

log = logging.getLogger('werkzeug') 
log.setLevel(logging.INFO) 
log.addHandler(handler) 

Nếu bạn xem cách werkzeug khởi tạo trình ghi nhật ký của nó, bạn sẽ thấy rằng nó thêm trình xử lý mặc định chỉ khi quá trình ghi nhật ký chưa được thiết lập. Điều đó có nghĩa là nếu bạn thiết lập nó trước khi wekzeug thực hiện, nó sẽ không sử dụng mặc định StreamHandler nhưng trình xử lý mà bạn cung cấp.

+0

Hãy chỉ định để biết thêm thông tin chi tiết, bạn có nghĩa là tôi cũng nên thêm các 'xử lý' để logger của werkzeug hoặc tôi cần phải tạo một logger mới – Kimmi

+0

Cố gắng để làm cho nó rõ ràng hơn. – mata

+0

Tuyệt vời, đó là ý tôi, cảm ơn. – Kimmi

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