Задать вопрос
@yuretzgt

Дублирование логов в python logging?

Имеется проект на Django , VIEWS.PY выглядит примерно так:
from django.shortcuts import render
from models import ORM_Model
logging.basicConfig(
    format="%(time)s - %(name)s %(lineno)d - %(levelname)s - %(message)s", level=logging.INFO,
    #datefmt='%H:%M:%S',
    fmt='%(asctime)s.%(msecs)03d',
)
logger = logging.getLogger(__name__)

#### НАЧАЛО ВЬЮХ 
def view_info_app(request,*args, **kwargs):
"""
а все что тут выводится - очень важно!
"""
    logger.info("APP: view_info_app")
    info_objects = ORM_Model.objects.get(id=123)
    logger.info("Очень нужная информация - %s",info_objects)
    return render("templates/index.html",{})

def view_index_app(request,*args, **kwargs):
"""
это не важно
"""
    logger.info("APP: view_index_app")
    info_objects = ORM_Model.objects.filter()
    logger.info("Не нужная информация - %s",info_objects)
    return render("templates/index.html",{})


появилась необходимость некоторую часть логов помимо вывода в консоль сохранить в базу

вопрос: как это красиво сделать только для нужной часть вьюх
  • Вопрос задан
  • 131 просмотр
Подписаться 3 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Читаем доки на logging, там уже всё есть, что нужно.
Создаёшь класс-потомок logging.Handler, в котором реализуешь запись сообщений журнала в базу. Но стоит поискать, может, уже есть сторонняя либа которая как раз такой класс даёт.
Дальше делаешь кастомный класс-фильтр, в котором отличаешь нужную инфу от ненужной.
При настройке логгинга добавляешь к нужному логу свой хэндлер, к хэндлеру уже прикручиваешь свой фильтр. Если надо, по аналогии можно к хэндлеру прикрутить ещё и свой Formatter для нестандартного оформления.
Ответ написан
Ваш ответ на вопрос

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

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