Change Log

9.0.0 (November 26, 2024)

See: Upgrading to 9.0+

New:
Changes:
Other:
  • Migrated project to use python 3.13 along with readthedocs generation.

  • now use isort

  • fixed codecov github action that was not properly configured and therefore not properly reporting coverage.

8.1.0 (May 24, 2024)

New:
  • Add a setting DJANGO_STRUCTLOG_USER_ID_FIELD = 'pk' to customize what user field to use as user_id in the logs. See #546 and #545. Special thanks to @sshishov.

Changes:
  • Drop support of python 3.7

  • Drop support of django 3.2, and 4.1

8.0.0 (March 13, 2024)

See: Upgrading to 8.0+

New:

7.1.0 (December 20, 2023)

New:
  • add asgi’s async view cancellation event request_cancelled. See #413 and and Request Events.

7.0.0 (December 13, 2023)

See: Upgrading to 7.0+

New:
  • (celery) add priority (if available) and routing_key to task_enqueued. See #345 and #341. Special thanks to badziyoussef.

  • Django 5.0 support. See #350. Take note async view cancellation when using asgi does not work yet, see #351.

  • Add streaming response support (for both sync and async) and Django 5’s async cancellation. See #353 and StreamingHttpResponse Events.

Changes:
  • Supports django-ipware 6+ only. See #403. Special thanks to the maintainer @un33k.

  • Drop support of django 4.0. See #338. Special thanks to @jairhenrique.

Other:
  • Improved demo project
    • Better UI

    • Easy switch between runserver_plus, wsgi an asgi

    • Front-end request feedbacks using toasts

6.0.1 (November 29, 2023)

Fixes:
  • freeze django-ipware<6 for now due to breaking changes. See #388

6.0 (October 3, 2023)

See: Upgrading to 6.0+

New:
  • Python 3.12 support

  • Add support of logging Commands

  • task_revoked has now a signame metadata. See #323.

  • task_not_found has now a task_id and a task metadata. See #323.

Fixes:
  • Add missing metadata when a task is revoked. See #317. Special thanks to @badziyoussef.

Changes:
  • Drop support of python 3.7

  • Drop legacy code still supporting celery < 4

  • Removal of deprecated:
    • django_structlog.middlewares.CeleryMiddleware

    • django_structlog.middlewares.SyncRequestMiddleware

    • django_structlog.middlewares.AsyncRequestMiddleware

    • django_structlog.middlewares.request_middleware_router

  • 4XX status codes now log by default as WARNING and 5XX as ERROR. The behaviour of 4XX can be customized with Configuration. See #308. Special thanks to @adinhodovic.

  • task_revoked’s signum is now an integer instead of an object. See #323.

  • task_not_found’s message was removed and replaced by task_id and task. See #323.

  • task_rejected’s message was removed and replaced by task_id. See #323.

  • Switched from git’s master to main branch

Other:
  • Add new How Tos section in the documentation.

5.3.0 (June 30, 2023)

New:
  • django setting DJANGO_STRUCTLOG_CELERY_ENABLED = True replacing django_structlog.middlewares.CeleryMiddleware. See Upgrading to 6.0+ and #265. Also introduce new internal app_settings that may come handy for future configurations.

Deprecations:
  • django_structlog.middlewares.CeleryMiddleware (see above).

5.2.0 (June 29, 2023)

New:

5.1.0 (April 22, 2023)

New:

5.0.2 (April 16, 2023)

See: Upgrading to 5.0+

Fixes:
  • Fix regression in 5.0.0 and 5.0.1 where exceptions were not logged as error but as info. See #226. Special thanks to @ntap-fge.

Rollbacks from 5.0.0:
  • Rollback removal of django_structlog.signals.bind_extra_request_failed_metadata. Relates the above fix.

5.0.1 (March 24, 2023)

See: Upgrading to 5.0+

Changes:
  • minimum requirements change for asgiref to 3.6.0. See #209. Special thanks to @adinsoon.

5.0.0 (March 23, 2023)

See: Upgrading to 5.0+

Changes:
  • RequestMiddleware and CeleryMiddleware now properly support async views

Removed:
  • (Rolled back in 5.0.2) django_structlog.signals.bind_extra_request_failed_metadata

Deprecates:
  • django_structlog.middlewares.request_middleware_router

  • django_structlog.middlewares.requests.AsyncRequestMiddleware

  • django_structlog.middlewares.requests.SyncRequestMiddleware

4.1.1 (February 7, 2023)

New:
  • Add django_structlog.middlewares.request_middleware_router to choose automatically between Async or Sync middleware

Rollbacks from 4.1.0:
  • Rollback RequestMiddleware not being a class anymore, its an internal SyncRequestMiddleware

Others:
  • Migrate project to pyproject.toml instead of setup.py

  • Add asgi server to demo project see Development.

4.1.0 (February 4, 2023)

New:
Changes:
  • RequestMiddleware is no longer a class but a function due to async view support. This should only affect projects using the middleware not as intended. If this cause you problems, please refer to this issue #183, the documentation or feel free to open a new issue. Special thanks to @gvangool for pointing that out.

Others:
  • Add colours in log in the demo project. See 63bdb4d to update your projects. Special thanks to @RoscoeTheDog.

  • Upgrade or remove various development packages

4.0.1 (October 25, 2022)

New:

4.0.0 (October 22, 2022)

See: Upgrading to 4.0+

Changes:
  • django-structlog will now on follow LTS versions of Python, Django, and Celery. See #110. Special thanks to @jairhenrique for his convincing arguments.

New:
  • You can now install django-structlog with celery extra. Specifying django-structlog[celery]==4.0.0 in requirements.txt will make sure your celery’s version is compatible.

Others:
  • Upgrade or remove various development packages

  • Upgrade local development environment from python 3.7 to 3.10 and from django 3.2 to django 4.1

  • Added a gh-pages

3.0.1 (August 2, 2022)

Fixes:
  • AttributeError with custom User without pk. See #80. Special thanks to @mlegner.

Others:
  • Add dependabot to manage dependencies. See #83. Special thanks to @jairhenrique.

  • Upgrade various development packages

3.0.0 (August 1, 2022)

See: Upgrading to 3.0+

Changes:
  • django-structlog now uses structlog.contextvars instead of structlog.threadlocal. See the upgrade guide for more information (Upgrading to 3.0+) and #78. Special thanks to @AndrewGuenther and @shimizukawa.
    • removed django_structlog.processors.inject_context_dict

    • minimum requirements change to python 3.7+

    • minimum requirements change to structlog 21.5

New:
  • Add python 3.10, celery 5.2 and django 4.0 to the test matrix.

Others:
  • Remove wrapper_class from the configuration

2.2.0 (November 18, 2021)

Changes:
  • Requests were logged as <WSGIRequest: GET '/'> (as an object) and now they are logged like this GET / (as a string). See #72. Special thanks to @humitos.

2.1.3 (September 28, 2021)

Fixes:

2.1.2 (August 31, 2021)

Fixes:
  • django.core.exceptions.PermissionDenied is no longer logged as 500 but 403. See #68. Special thanks to @rabbit-aaron.

2.1.1 (June 22, 2021)

Others:
  • Add django 3.2 and python 3.9 to the test matrix and pypi metadata. See #65. Special thanks to @kashewnuts.

2.1.0 (November 26, 2020)

New:
  • django_structlog.processors.inject_context_dict for standard python loggers. See #24. Special thanks to @debfx.

2.0.0 (November 25, 2020)

Upgrade:
  • There are necessary configuration changes needed. See Upgrading to 2.0+ for the details.

Changes:
Fixes:

1.6.3 (November 11, 2020)

Improvements:
  • Call stack of exception in log is now an appropriate string. See #54. Special thanks to @debfx.

1.6.2 (October 4, 2020)

Fixes:

1.6.1 (August 13, 2020)

Fixes:
  • Removed providing_args from signals to fix django 4.0 deprecation warnings introduced by django 3.1. See #44. Special thanks to @ticosax.

  • Fix sender of signals.pre_task_succeeded

  • Documented signal parameters in doc strings and API documentation to replace providing_args

Others:
  • Add django 3.0 and 3.1 to the test matrix and pypi supported frameworks metadata

  • Fix reference of the previous ci in the documentation

1.6.0 (June 17, 2020)

Changes:
  • task_succeed is now task_succeeded. Special thanks to @PawelMorawian.

  • Remove result from task_succeeded log (may be added back, see below). Special thanks to @PawelMorawian as well.

  • Add django_structlog.celery.signals.pre_task_succeeded. To be able to bind result if someone really needs it.

1.5.5 (June 16, 2020)

New:
  • Add bind_extra_request_finished_metadata and bind_extra_request_failed_metadata. See #39. Special thanks to @prik2693.

1.5.4 (June 15, 2020)

Improvements:
  • Remove redundant DJANGO_STRUCTLOG_LOG_USER_IN_REQUEST_FINISHED setting and just always make sure user_id is in request_finished and request_failed instead. See #37.

1.5.3 (June 15, 2020)

New:

1.5.2 (April 2, 2020)

New:
  • Add modify_context_before_task_publish signal.

1.5.1 (March 18, 2020)

Improvements:
  • Allow to override celery task metadata from binding. See #32 and #33. Special thanks to @chiragjn

1.5.0 (March 6, 2020)

Improvements:

1.4.1 (February 8, 2020)

New:
  • Bind X-Correlation-ID HTTP header’s value as correlation_id when provided in request.

1.4.0 (February 7, 2020)

New:
  • Use X-Request-ID HTTP header’s value as request_id when provided in request. See #22. Special thanks to @jairhenrique

1.3.5 (December 23, 2019)

New:
  • Add python 3.8, celery 4.4 and django 3.0 to the test matrix.

Improvements:
  • Extract test_app from django_structlog_demo_app in order to test django_structlog all by itself

  • Improve CI execution speed by merging stages

  • Upgrade a few development depencencies

1.3.4 (November 27, 2019)

Bugfix:
  • Exception logging not working properly with DEBUG = False. See #19. Special thanks to @danpalmer

1.3.3 (October 6, 2019)

Bugfix:
  • Fix support of different primary key for User model. See #13. Special thanks to @dhararon

1.3.2 (September 21, 2019)

Improvements:
  • Add support of projects without AuthenticationMiddleware. See #9. Special thanks to @dhararon

1.3.1 (September 4, 2019)

Bugfixes:
  • Remove extraneous rest-framework dependency introduced by #7. See #8 . Special thanks to @ghickman

1.3.0 (September 3, 2019)

Improvements:

1.2.3 (May 18, 2019)

Bugfixes:
  • Fix structlog dependency not being installed

Improvements:
  • Use black code formatter

1.2.2 (May 13, 2019)

Improvements:
  • Use appropriate packaging

1.2.1 (May 8, 2019)

Bugfixes:
  • Fix missing license file to be included in distribution

1.2.0 (May 8, 2019)

Changes:
  • In the event task_enqueued, task_id and task_name are renamed child_task_id and child_task_name respectively to avoid override of task_id in nested tasks.

1.1.6 (May 8, 2019)

New:
  • Add task_name when a task is enqueued

1.1.5 (May 8, 2019)

New:
  • Add support of tasks calling other tasks (introducing parent_task_id)

Bugfixes:
  • Fix missing packages

1.1.4 (April 22, 2019)

Improvements:
  • Wheel distribution

1.1.3 (April 22, 2019)

Improvements:
  • api documentation

  • code documentation

1.1.2 (April 19, 2019)

Changes:
  • Rewrite the log texts as events

1.1.1 (April 18, 2019)

New:
  • Add celery signal signals.bind_extra_task_metadata

1.1 (April 16, 2019)

New:
  • Add celery tasks support

1.0.4 to 1.0.7 (April 14, 2019)

New:
  • Automated releases with tags on travis

1.0.3 (April 14, 2019)

Bugfixes:
  • Add bind_extra_request_metadata documentation

1.0.2 (April 13, 2019)

Bugfixes:
  • Tweaked documentation.

1.0.0 (April 13, 2019)

New:
  • Fist public release.