2015-05-06 4 views
8

Колба по умолчанию будет регистрировать такие вещи, как GET и POST-запросы, непосредственно с тегом INFO. При реализации пользовательского регистратора они отправляются в один и тот же журнал и помехи для моего уровня INFO. Есть ли способ понизить их до другого уровня, такого как DEBUG?Изменение журналов фляг от INFO до DEBUG

Это регистратор я использую:

# 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) 

ответ

6

Я не уверен, что таким образом понизить уровень журнала запросов (как это обычно указывается явно в коде как logging.info (».. .)), но следующее может помочь вам уменьшить многословие самого Флакса.

Python позволяет вам иметь несколько регистраторов, каждый со своим собственным уровнем журнала. Вы можете изменить любой существующий регистратор, если знаете имя модуля, в котором оно находится, или имя, которое было зарегистрировано, как описано here.

Например:

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

выше можно сделать для любого модуля питона. Flask предоставляет регистратор для каждого приложения. Вы можете получить ссылку на него, как это:

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

Правильно то, что, установив уровень в приложении на ОШИБКУ, хотя он удаляет журналы INFO из Flask, это не позволяет мне иметь журналы уровня DEBUG, не видя INFO, правильно? Мне бы пришлось повернуть все мои журналы DEBUG в ERROR, по крайней мере, чтобы заставить его работать. Даже если я использую функцию getLogger, все равно кажется, что Flask записывает журналы INFO в мой журнал ... – ZekeDroid

+0

Создал ли пользовательский логгер, как описано by @foobarto? И это сообщает как ваши собственные журналы, так и журналы фляг? – amccormack

+0

не сделал, просто сделал, хорошо работает сейчас :) – ZekeDroid

6

В самом деле, есть способ понизить запись журнала из INFO в DEBUG (даже если он уже был излучаемый с помощью вызова такой, как info()). Это может быть достигнуто с помощью фильтра, прикрепленного к регистратору. Согласно docs фильтр проверяет:

Является ли указанная запись регистрируемой? Возвращает ноль для нет, отличное от нуля для да. Если будет сочтено целесообразным, запись может быть изменена на месте на этот метод.

Таким образом фильтр может изменить уровень журнала записи (levelno и levelname атрибутов). Позже обработчик может разрешить или отбросить эту запись на основе нового уровня.

+0

Это правильный ответ, а не неуклюжая работа, как и другая. –

Смежные вопросы