hawkkoff
@hawkkoff

Почему logging в Flask делает больше одной записи?

Добрый день

Проблема такая. Сделал чтобы при загрузки страницы logger оставлял записть о подключении к базе и соответствующее сообщение при возможном/не возможном отображении страницы. Обновляю страницу ровно 1 раз получаю кучку записей, хотя логично, что их должно быть 2

Лог
DEBUG:service: db connect - ok (2014-08-11 23:10:19; __init__.py:15)
DEBUG:service: 1 (2014-08-11 23:10:19; __init__.py:39)
DEBUG:service: db connect - ok (2014-08-11 23:10:20; __init__.py:15)
DEBUG:service: db connect - ok (2014-08-11 23:10:20; __init__.py:15)
DEBUG:service: db connect - ok (2014-08-11 23:10:23; __init__.py:15)
DEBUG:service: 1 (2014-08-11 23:10:23; __init__.py:39)

Код

from flask import Flask, render_template, request, abort, Markup
import sqlite3

#Log config
import logging
import logging.config
logging.config.fileConfig('logging.conf',disable_existing_loggers=False)
logger = logging.getLogger(__name__)


conn = sqlite3.connect('service.db')
c = conn.cursor()
c.execute("SELECT * FROM 'meta'")

logger.debug('db connect - ok')


app = Flask(__name__)
app.config.update(
    DEBUG=True,
    TESTING=True
)

@app.route('/service/<servName>/')
def serviceForm(servName):
	try:
		listPage[pageName]
		app.logger.debug("1")
		return render_template(listPage[pageName]['tempForm'], name=pageName, action=request.path)
	except:
		app.logger.debug("2")
		abort(404)


if __name__ == '__main__':
    app.run()


Код конечно подсократил, так что возможны идейные тупики, вроде "А что за список listPage?", на это можно (я так думаю) закрыть глаза, основную проблему код передаёт

Заранее спасибо.
  • Вопрос задан
  • 2696 просмотров
Пригласить эксперта
Ответы на вопрос 1
@s1dney
когда в параметрах запуска присутствует debug и при создании объекта класса logging явно не указан уровень логиирования вполне ожидаемо, что любой импортируемый модуль будет спамить в дебаг все подробности своей работы
при создании логгера нужно указывать уровень выше debug, чтобы избежать нежелательного спама

а если нужен дебаг, то можно ручками для sqlite в данном случае, вот так указать ему нужный уровень
sqlite_log = logging.getLogger("sqlite")
sqlite_log.setLevel(logging.ERROR)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы