跳转到主要内容

django-eventlog在Django模型中存储事件消息。

项目描述


📖 完整文档: https://barttc.github.io/django-eventlog/

兼容性矩阵

Py/Dj 3.8 3.9 3.10 3.11 3.12
3.2 (LTS)
4.0
4.1
4.2 (LTS)
5.0
5.1

django-eventlog

djang-eventlog Logo

django-eventlog是一个非常简单的日志记录器,您可以使用它来跟踪代码中的某些操作。事件存储在Django模型中,并在Django Admin中查看。

使用示例

from eventlog import EventGroup

e = EventGroup()                       # Start a new Event Group
e.info('About to send 1000 mails.',    # Trigger an Event
       initiator='Mailer Daemon')
try:
    # ... sending 1000 mails
    e.info('All emails sent!',         # Trigger an Event in the same group,
           initiator='Mailer Daemon')  # so they are combined in the admin.
except Exception:
    e.error('There was an error sending the emails.',
            initiator='Mailer Daemon')

您可以通过指定组名来重用事件组,并附加可选数据。数据必须是JSON可序列化的。

from eventlog import EventGroup

def purchase():
    e = EventGroup(group_id=f"Order {self.order.pk}")
    e.info("Sent order to Shopify", data={"items": [1, 2, 3]})

def subscribe_newsletter():
    e = EventGroup(group_id=f"Order {self.order.pk}")
    e.info("User subscribed to newsletter on checkout", data={"email": "user@example.com"})

事件可以按“事件组”分组,当在管理界面中悬停于其中一个项目时,同一组中的所有事件都会突出显示

事件的详细信息视图将列出此组中的所有其他事件,以便您可以跟踪进度

虽然看起来相似,但它并不是要替代您的常规Python logging功能,而是要补充它。

django-eventlog将其数据存储在常规数据库模型中,因此每个日志条目都会触发SQL插入。因此,您在使用它时应小心,特别是在高性能和/或高容量环境中。

变更日志

2.2.1 (2024-09-02)

  • Django 5.1支持

2.2 (2024-06-16)

  • 小错误修复
  • 现在数据库的字段“group”使用了数据库索引。

2.1 (2024-03-20)

  • 现在可以通过AppConfig指定随机分组ID的格式和值。
  • 对事件模型进行了各种改进,使其可以通过AppConfig进行交换。
  • 将开发工具从Pipenv切换到Poetry。

2.0 (2024-03-10)

  • 整体测试和代码重构。

  • 现在使用MKDocs进行文档编写。

  • 管理员的更改表单中的时间轴现在支持天数和小时数的延迟,而不仅仅是分钟。

  • 不兼容向后:移除了未记录的Event.objects.purge()查询集方法。

  • 不兼容向后:应用配置中定义的事件类型列表现在通过Python数据类设置,而不是字典。迁移是直接的。

    event_types = {
        "info": {
            "label": _("Info"),
            "color": None,
            "bgcolor": None,
        },
        "warning": {
            "label": _("Warning"),
            "color": None,
            "bgcolor": None,
        },
        # ...
    }
    

    现在字典是EventTypeListEventType数据类。

    from django.utils.translation import gettext_lazy as _
    from eventlog.datastructures import EventType, EventTypeList
    
    # List of event types to be used in events. A list of `EventType` classes
    event_types = EventTypeList(
        EventType(name="info", label=_("Info")),
        EventType(name="warning", label=_("Warning")),
        EventType(name="error", label=_("Error"), color="red"),
        EventType(name="critical", label=_("Critical"), color="white", bgcolor="red"),
    )
    

    只有在你之前覆盖了事件类型属性时,才需要做这个更改。

1.5 (2024-03-08)

  • 事件可以附加可选的、可序列化为JSON的数据。
  • 修复了暗黑模式的颜色。
  • 各种管理界面改进。

1.4 (2024-03-05)

  • 事件组现在可以使用任意名称而不是UUID。
  • 事件评论是一个文本字段。
  • 修复了与AutoFields相关的潜在迁移警告。

1.3 (2023-10-04)

  • Python 3.12兼容性。
  • Django 5.0支持。
  • 类型注解。

1.2 (2023-04-28)

  • Python 3.7到3.11兼容性。
  • Django 3.2到4.2支持。

1.1 (2018-05-11)

  • 添加了手动设置组ID的能力,使EventGroup对象可以通过线程重复使用。

1.0 (2018-02-13)

  • 生产就绪的1.0版本。
  • 详情管理视图现在显示具有注解延迟的组中所有事件,因此您可以看到组的进度。

0.9 (2018-02-13)

  • 初始版本。
  • Django 1.8到2.0兼容性。
  • Python 2.7到3.6兼容性。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

django_eventlog-2.2.1.tar.gz (16.9 kB 查看哈希)

上传时间

构建分布

django_eventlog-2.2.1-py3-none-any.whl (19.3 kB 查看哈希)

上传时间 Python 3

由以下支持