将用户活动记录到Django中的文件

时间:2016-11-02 18:36:56

标签: python django logging

我想将所有更改记录到用户创建的文件中。用户主要使用通用视图更改数据。 (DeleteView,UpdateView,CreateView)我必须能够跟踪所有更改。

例如:

[timestamp] User: [username] added [all] [additions] [to] [database] [here]

[timestamp] User: [username] deleted [all] [deleted] [fields]

[timestamp] User: [username] edited [old] [fields] to [new] [data] [fields]

可能会有更多信息(比如用户全名等),但我至少试着让问题变得简单。此外,由于明显的原因,日志必须在生产中工作。到目前为止,我发现的是将错误消息等记录到文件或控制台。有谁知道从哪里开始?

1 个答案:

答案 0 :(得分:0)

您可能需要查看django-reversion。我想说,这是审核变更的一种比较流行的解决方案。

最基本的用法示例如下:

  1. 使用reversion注册模型:

    import reversion
    
    @reversion.register()
    class YourModel(models.Model):
        # ...
        pass
    
  2. 通过it's middleware

    记录观看中的所有更改
    MIDDLEWARE_CLASSES += ('reversion.middleware.RevisionMiddleware', )
    
  3. (OR)decorating specific views记录更改:

    from reversion.views import RevisionMixin
    
    class RevisionFormView(RevisionMixin, FormView):
        # ...
        pass
    
  4. (和/或)使用the context manager记录更改:

    with reversion.create_revision():
    
        # Save a new model instance.
        obj = YourModel()
        obj.name = "obj v1"
        obj.save()
    
        # Store some meta-information.
        reversion.set_user(request.user)
        reversion.set_comment("Created revision 1")