Я хотел бы вести журнал в моем приложении для каждого события изменения базы данных. Что-то вроде отметки времени + имя пользователя +, какая модель была изменена, записана в файл журнала (просто укажите, что экземпляр модели был изменен, а не то, что это изменение было). Комбинация сигналов и регистрации выглядит как естественная подгонка.
Так что в сигналах моделей я бы сделал:
import logging
...
logger = logging.getLogger(__name__)
logger.info("Order {} deleted by {}".format(order.barcode, request.user.email))
Проблема в том, что информационный уровень журнала полон запросов POST и GET. Обычная рекомендация - если вы не хотите, чтобы все эти журналы запросов в вашем файле журнала переходили на более высокий уровень, например Предупреждение, но не имеет смысла отмечать эти события как предупреждения здесь. Другой вариант - использовать фильтр, чтобы избавиться от журналов GET / POST, как рекомендовано здесь . Но по умолчанию события журнала предупреждений и уровня ошибок также попадают в информационный журнал, что в данном случае также является нежелательным поведением, поэтому их также необходимо отфильтровать. Этот файл журнала действительно предназначен только для регистрации события «этот пользователь изменил экземпляр модели».
Также в идеале этот файл должен быть доступен (только для чтения) на сайте пользователям на уровне персонала, поэтому я подумывал о том, чтобы поместить этот файл в каталог MEDIA. Если журнал также содержит следы ошибок, это, вероятно, плохая идея.
Это просто похоже на хакерское решение, что я здесь пропускаю?