【发布时间】:2019-04-09 06:47:34
【问题描述】:
我想在我的应用程序中为每个数据库更改事件保留一个日志。诸如时间戳+用户名+更改了哪个模型,写入日志文件(仅记录模型实例已修改,而不是更改的内容)。 signals 和 logging 的组合似乎很自然。
所以在模型的信号中我会这样做:
import logging
...
logger = logging.getLogger(__name__)
logger.info("Order {} deleted by {}".format(order.barcode, request.user.email))
这样做的问题是日志的信息级别充满了 POST 和 GET 请求。通常的建议是,如果您不希望日志文件中的所有这些请求日志都进入更高级别(如警告),但在此处将这些事件标记为警告是没有意义的。另一种选择是使用过滤器来删除 GET/POST 日志,推荐 here。但默认情况下,警告和错误级别的日志事件也会出现在信息日志中,在这种情况下这也是不希望出现的行为,因此也必须过滤掉这些事件。此日志文件实际上只是用于记录“此用户更改此模型实例”事件。
理想情况下,员工级别的用户可以在现场访问(只读)此文件,因此我正在考虑将此文件放在 MEDIA 目录中。如果日志还包含错误跟踪,那可能是个坏主意。
这似乎是一个骇人听闻的解决方案,我在这里忽略了什么?
【问题讨论】: