【问题标题】:Log user activity to file in Django将用户活动记录到 Django 中的文件
【发布时间】:2016-11-02 18:36:55
【问题描述】:

我想记录用户对文件所做的所有更改。用户主要使用通用视图更改数据。 (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]

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

【问题讨论】:

标签: python django logging


【解决方案1】:

您可能想看看django-reversion。我想说,它是审核更改的更流行的解决方案之一。

最基本的用法示例,如下所示:

  1. 注册您的模型并进行回归:

    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. (AND/OR)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")
    

【讨论】:

  • 无论您在哪里对模型实例进行更改,都希望被记录下来。 (可以是模型方法、视图、表单方法等)
猜你喜欢
  • 2019-04-09
  • 2021-11-19
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
相关资源
最近更新 更多