2015-03-11 16 views
6

Flask erişim günlüklerini STDOUT yerine STDERR akışına yazıyor. Bu yapılandırma nasıl değiştirilir, böylece erişim günlükleri STDOUT'a ve uygulama hataları STDERR'e gider?Python Flask erişim günlüğüne STDERR yazıyor

open-cricket [master] python3 flaskr.py > stdout.log 2> stderr.log & 
[1] 11929 

open-cricket [master] tail -f stderr.log 
* Running on http://127.0.0.1:9001/ 
127.0.0.1 - - [11/Mar/2015 16:23:25] "GET /?search=Sachin+Tendulkar+stats HTTP/1.1" 200 - 
127.0.0.1 - - [11/Mar/2015 16:23:25] "GET /favicon.ico HTTP/1.1" 404 - 

cevap

4

İşte yapmanız gereken şey. Import logging ve oturum açmak için gereken seviyeyi ayarlayın.

import logging 
log = logging.getLogger('werkzeug') 
log.setLevel(logging.ERROR) 
+0

, erişim günlüklerini tamamen devre dışı bırakmayacak mı? – goncalopp

+0

Doğru istediğin buydu mu? – iJade

+2

OP değilim, ancak soruyu "STDOUT'ta nasıl erişim günlüklerine sahip olacağım?" Şeklinde yorumladım. – goncalopp

4

Flask geliştirme sunucusunu kullandığınızı varsayalım.

Flask'ın geliştirme sunucusu, WSGIRequestHandler numaralı werkzeug numaralı telefon numarasına dayanmaktadır, buna karşılık, standart lib üzerinde BaseHTTPServer temel alınmıştır.

fark edeceğiniz gibi, WSGIRequestHandler overrides the logging methods, log_request, log_error ve log_message, kendi logging.Logger var kullanmak - böylece IJade cevabı ruhu içinde, istedikleri gibi sadece geçersiz kılabilir. O rota batarsam

, bütün bu çok uygulama özgü olduğunu, ancak bunun yerine kendi FileHandler eklemek temizleyici olacağını düşünüyorum ve split the stdout and stderr output using a filter

Not - gerçekten hiç uygun arayüzü var Ne istersen yap.

Asıl sorununun teğet olmasına rağmen, gerçekten sormam gerektiğini hissediyorum - Neden bir geliştirme sunucusunda her günlüğüne girenlerden endişe duyuyorsunuz?

Bu tür bir soruna çarpıyorsanız, zaten gerçek bir web sunucusu çalıştırmıyor olmalısınız?

+0

Flask'taki gelişimi/üretimi nasıl ayırt edersiniz? – emaillenin

+0

@emaillenin, bunları başka bir yazılım parçasında (ki çok geniş bir soru) farklı kılabilirsiniz. Temel olarak, eğer geliştiricilere ve iç kalite kontrolüne herhangi bir kimseye maruz kalırsa, onun üretimidir. – goncalopp

İlgili konular