2015-06-25 14 views
5

Utworzono TimedRotatingHandler dla serwera Flask. Ale wszystkie dzienniki generowane przez werkzeug są nadal wyrzucane na konsolę.Jak przekierować logi dziennika Pythona werkzeug do pliku dziennika podczas korzystania TimedRotatingHandler?

Jak mogę przekierować te dzienniki do pliku dziennika (test.log) z funkcją obracania dziennika.

Fragment kodu:

log = logging.getLogger(__name__) 
log.setLevel(logging.DEBUG) 
# add a file handler 
fh = logging.handlers.TimedRotatingFileHandler("test.log",when='M',interval=1,backupCount=0) 
fh.setLevel(logging.DEBUG) 
# create a formatter and set the formatter for the handler. 
frmt = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') 
fh.setFormatter(frmt) 
# add the Handler to the logger 
log.addHandler(fh) 
app.run(host='0.0.0.0', debug=True) 

Poniższe dzienniki są nadal rzucony na konsoli.

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 
* Restarting with stat 
192.168.1.6 - - [25/Jun/2015 07:11:13] "GET/HTTP/1.1" 200 - 
192.168.1.6 - - [25/Jun/2015 07:11:13] "GET /static/js/jquery-1.11.2/jquery-1.11.2.min.js HTTP/1.1" 304 - 
192.168.1.6 - - [25/Jun/2015 07:11:13] "GET /static/js/main/main.js HTTP/1.1" 304 - 
192.168.1.6 - - [25/Jun/2015 07:11:13] "GET /favicon.ico HTTP/1.1" 404 - 

Dodanie obsługi plików dziennika do rejestratora Werkzeug nie jest zbyt rozwiązania problemu

logging.getLogger('werkzeug').addHandler(fh); 

Odpowiedz

1

to wygląda Werkzeug wysyła wiadomości do rejestratora głównego zamiast nazwanego rejestratorze.

Próba ta powinna rozpocząć rejestrowanie do pliku logging.getLogger().addHandler(fh)

Jeśli chcesz go zatrzymać zalogowaniu do konsoli będziesz musiał usunąć obsługi strumienia z rejestratora głównego. Widać teleskopowe na rejestratorze korzeniowego za pomocą

>>> print logging.getLogger().handlers [<logging.StreamHandler object at 0x.....>, logging.handlers.TimedRotatingFileHandler object at 0x.....>]

-1

Aby zmienić werkzeung zalogowaniu trzeba zastąpić logging.root.handler jak:

import logging 
from logging.handlers import RotatingFileHandler 

handler = RotatingFileHandler('log.log', maxBytes=10000, backupCount=1) 
handler.setLevel(logging.ERROR) 

logging.root.handlers = [handler] 

Zobacz here szczegóły.

Powiązane problemy