2015-05-06 14 views
8

Flask domyślnie rejestruje takie rzeczy jak żądania GET i POST bezpośrednio za pomocą znacznika INFO. Podczas implementacji niestandardowego programu rejestrującego są one umieszczane w tym samym dzienniku i zajmują moją warstwę INFO. Czy istnieje sposób na obniżenie ich do innej warstwy, takiej jak DEBUG?Zmiana logów w kolbie z INFO na DEBUG

Jest to rejestrator używam:

# create logger 
FORMAT = '%(asctime)s - %(module)s - %(levelname)s - Thread_name: %(threadName)s - %(message)s' 
logging.basicConfig(
    format=FORMAT, datefmt='%m/%d/%Y %I:%M:%S %p', 
    filename='wizard/logs/example.log', level=logging.DEBUG) 

Odpowiedz

6

nie jestem pewien sposób na downgrade poziom rejestrowania wniosków (jak to zwykle jest wyraźnie określona w kodzie jak logging.info (”.. ")), ale poniższe mogą pomóc w zmniejszeniu szczegółowości samego Flask.

Python pozwala na posiadanie wielu rejestratorów, każdy z własnym poziomem logowania. Możesz zmodyfikować dowolny istniejący program rejestrujący, jeśli znasz nazwę modułu, w którym się on znajduje lub nazwę, w której został zarejestrowany, zgodnie z opisem here.

Na przykład

import logging 
logger = logging.getLogger("mypackage.mymodule") # or __name__ for current module 
logger.setLevel(logging.ERROR) 

Powyższe można przeprowadzić dla dowolnego modułu pytona. Flask zapewnia rejestrator dla każdej aplikacji. Można odwołać się do niego tak:

import logging 
from flask import Flask 
app = Flask(__name__) # or instead of __name__ provide the name of the module 
app.logger.setLevel(logging.ERROR) 
+0

Dobrze, że ustawiając poziom w aplikacji na BŁĄD, mimo że usuwa dzienniki INFO z Flask, to nie pozwala mi mieć dzienników poziomów DEBUG bez wyświetlania INFO, prawda? Musiałbym włączyć wszystkie moje dzienniki DEBUG do ERROR, przynajmniej, aby to działało. Nawet jeśli używam funkcji getLogger, nadal wydaje się, że Flask loguje logi INFO do mojego loggera ... – ZekeDroid

+0

Czy stworzyłeś niestandardowy rejestrator, jak opisuje @foobarto? A to jest raportowanie zarówno własnych dzienników, jak i dzienników w puszkach? – amccormack

+0

po prostu nie działało dobrze teraz :) – ZekeDroid

6

W rzeczywistości nie jest to sposób na downgrade rekordu dziennika z INFO debugowania (nawet jeśli został on już emitowany za pomocą połączenia takiego jak info()). Można to osiągnąć za pomocą filtra podłączonego do rejestratora. Zgodnie z docs filtr sprawdza:

Czy określony rekord jest zalogowany? Zwraca zero dla nie, niezerowe dla tak. Jeśli uznasz to za stosowne, rekord może zostać zmodyfikowany na miejscu metodą przez .

Więc filtr może zmienić poziom rekordu logu (levelno i levelName atrybuty). Później program obsługi może następnie zezwolić lub upuścić ten rekord na podstawie nowego poziomu.

+0

To jest właściwa odpowiedź, a nie niezręczna praca jak druga. –