Skip to main content


📖 Full documentation: https://barttc.github.io/django-eventlog/

Compatibility Matrix:

Py/Dj 3.9 3.10 3.11 3.12 3.13
4.2 (LTS)
5.0
5.1

django-eventlog

djang-eventlog Logo

django-eventlog is a very simple event logger you can use to track certain actions in your code. Events are stored in a Django model and can be viewed in the Django Admin.

Usage Example:

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')

You can reuse an event group by specifying a group name and attach optional data. Data must be JSON serializable.

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"})

Events can be grouped in a "Event Group" and when hovering over one item in the admin, all events of the same group are highlighted:

The details view of an event will list all other events of this group so you can track the progress:

While looking similar, it's not intended to be a replacement for your regular Python logging facility, rather an addition to it.

django-eventlog stores it's data in a regular database model, so each log entry will trigger a SQL Insert. Therefore you should be careful using it in high performance and/or high volume environments.

Changelog

2.2.2 (2024-11-19)

  • Added support for Python 3.13
  • Drop support for Django <= 4.1

2.2.1 (2024-09-02)

  • Added support for Django 5.1

2.2 (2024-06-16)

  • Minor typo fixes
  • The 'group' db field now uses a DB index.

2.1 (2024-03-20)

  • The format and value of the random group id can now be specified using the AppConfig.
  • Various improvements to make the Event model swappable via the AppConfig.
  • Switch development tooling from Pipenv to Poetry

2.0 (2024-03-10)

  • Overall test and code refactor.

  • Documentation now done with MKDocs.

  • Timeline in Admin change form now supports delays of days and hours, instead of just minutes.

  • Backwards incompatible: Removed undocumented Event.objects.purge() queryset method.

  • Backwards incompatible: The list of event types defined in the app config is now set via Python dataclasses rather than a dictionary. The migration is straightforward.

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

    The dictionary is now a EventTypeList of EventType dataclasses:

    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"),
    )
    

    You will only need to do this change if you've earlier overridden the event_type property.

1.5 (2024-03-08)

  • Event can have optional, JSON serializable data attached.
  • Fixed dark mode colors.
  • Various Admin UI improvements.

1.4 (2024-03-05)

  • Event groups can now have arbitrary names instead of UUIDs.
  • Event comments is a textfield.
  • Fixed potential migration warnings around AutoFields.

1.3 (2023-10-04)

  • Python 3.12 compatibility
  • Django 5.0 support
  • Type Annotations

1.2 (2023-04-28)

  • Python 3.7 to 3.11 compatibility
  • Django 3.2 to 4.2 support

1.1 (2018-05-11)

  • Added ability to manually set a group id to make an EventGroup object reusable through threads.

1.0 (2018-02-13)

  • Production ready 1.0 release.
  • The details Admin view now displays all events of the group with an annotated delay, so you can see the progress of the group.

0.9 (2018-02-13)

  • Initial release.
  • Django 1.8 to 2.0 compatibility.
  • Python 2.7 to 3.6 compatibility.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_eventlog-2.2.2.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_eventlog-2.2.2-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file django_eventlog-2.2.2.tar.gz.

File metadata

  • Download URL: django_eventlog-2.2.2.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.13.0 Darwin/24.1.0

File hashes

Hashes for django_eventlog-2.2.2.tar.gz
Algorithm Hash digest
SHA256 1dbf22651f1891e20feb77c7a39e078b9ece6b894993c8462e989b0857cde039
MD5 705c2d6f43ce7fb008289d7ba2bb67f4
BLAKE2b-256 fdc4b3fb606e671f6e023d2f9354b19bd0ad2e579cc70e79782afce9c5f56f91

See more details on using hashes here.

File details

Details for the file django_eventlog-2.2.2-py3-none-any.whl.

File metadata

  • Download URL: django_eventlog-2.2.2-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.13.0 Darwin/24.1.0

File hashes

Hashes for django_eventlog-2.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dece3b62e0be1c03d1ff3b71bb73ae31e443ce3f4e48c0ec79e7a24e9a8abdd9
MD5 f39949f83dc10d5cab662e07698ecf38
BLAKE2b-256 b2758216ba6faf663c1ba17199fa5fa215208e466ba900a4367ef5f68e6edbc0

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.2.2 This release

2 files

2.2.1

2 files

2.2

2 files

2.0

2 files

1.5

2 files

1.4

2 files

1.3

2 files

1.2

2 files

1.1

2 files

1.0

2 files

0.9

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page