Change Log ========== 9.1.1 (April 7, 2025) ------------------------ *Fixes:* - fix ``duration_ms`` to the celery tasks metadata not working. See `#811 `_. Special thanks to `@ahumeau `_. 9.1.0 (April 4, 2025) ------------------------ *New:* - new setting ``DJANGO_STRUCTLOG_IP_LOGGING_ENABLED`` (default ``True``) to allow to disable ip binding. See `#803 `_. Special thanks to `@dulguunpc `_. - add ``duration_ms`` to the celery tasks metadata. See `#796 `_. Special thanks to `@ahumeau `_. *Fixes:* - `vary: Cookie` was always set. See `#734 `_. Special thanks to `@last-partizan `_ *Other:* - add support of django 5.2 (just adding it to the test matrix, no code changes) 9.0.1 (January 29, 2025) ------------------------ *Fixes:* - Fix exceptions not being propagated when using streaming response. See `#747 `_. Special thanks to `@liambuchanan `_. 9.0.0 (November 26, 2024) ------------------------- See: :ref:`upgrade_9.0` *New:* - Add type definitions for the project. See `#697 `_ and `#696 `_. Special thanks to `@j00bar `_ and `@MaxDude132 `_ for the review. *Changes:* - ``RequestMiddleware`` now relies on django signal `got_request_exception `_ instead of Middleware `process_exception `_ method. See `#705 `_, `#658 `_ and :ref:`upgrade_9.0`. Special thanks to `@sshishov `_. - Add python 3.13 support. See `#674 `_. - Drop python 3.8 support. See `#674 `_. - Django 5.1 and celery 5.4 support. See `#617 `_. *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 :ref:`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: :ref:`upgrade_8.0` *New:* - add ``log_kwargs`` to :class:`django_structlog.signals.bind_extra_request_metadata`, :class:`django_structlog.signals.bind_extra_request_finished_metadata`, and :class:`django_structlog.signals.bind_extra_request_failed_metadata`. See `#484 `_. Special thanks to `@shtoltz `_. 7.1.0 (December 20, 2023) ------------------------- *New:* - add ``asgi``'s async view cancellation event ``request_cancelled``. See `#413 `_ and and :ref:`request_events`. 7.0.0 (December 13, 2023) ------------------------- See: :ref:`upgrade_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 :ref:`streaming_response_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: :ref:`upgrade_6.0` *New:* - Python 3.12 support - Add support of logging :ref:`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: - :class:`django_structlog.middlewares.CeleryMiddleware` - :class:`django_structlog.middlewares.SyncRequestMiddleware` - :class:`django_structlog.middlewares.AsyncRequestMiddleware` - :class:`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 :ref:`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 :ref:`how_tos` section in the documentation. 5.3.0 (June 30, 2023) --------------------- *New:* - django setting ``DJANGO_STRUCTLOG_CELERY_ENABLED = True`` replacing :class:`django_structlog.middlewares.CeleryMiddleware`. See :ref:`upgrade_6.0` and `#265 `_. Also introduce new internal `app_settings` that may come handy for future configurations. *Deprecations:* - :class:`django_structlog.middlewares.CeleryMiddleware` (see above). 5.2.0 (June 29, 2023) --------------------- *New:* - Add new event ``task_started``. See `#260 `_. Special thanks to `@adrenaline681 `_. 5.1.0 (April 22, 2023) ---------------------- *New:* - Add new signal :class:`django_structlog.signals.update_failure_response` allowing to modify the response in case of failure. See `#231 `_. Special thanks to `@HMaker `_. 5.0.2 (April 16, 2023) ---------------------- See: :ref:`upgrade_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: :ref:`upgrade_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: :ref:`upgrade_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:* - :class:`django_structlog.middlewares.request_middleware_router` - :class:`django_structlog.middlewares.requests.AsyncRequestMiddleware` - :class:`django_structlog.middlewares.requests.SyncRequestMiddleware` 4.1.1 (February 7, 2023) ------------------------ *New:* - Add :class:`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 :ref:`development`. 4.1.0 (February 4, 2023) ------------------------ *New:* - Add `async view `_ support. See `#180 `_. Special thanks to `@DamianMel `_. *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:* - Add support to ``python`` 3.11. See `#142 `_. Special thanks to `@jairhenrique `_. 4.0.0 (October 22, 2022) ------------------------ See: :ref:`upgrade_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: :ref:`upgrade_3.0` *Changes:* - ``django-structlog`` now uses ``structlog.contextvars`` instead of ``structlog.threadlocal``. See the upgrade guide for more information (:ref:`upgrade_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 ```` (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:* - Implement `Celery Task.throws `_' behaviour of logging expected exception as ``INFO`` with no tracebacks. See `#62 `_ and `#70 `_. Special thanks to `@meunomemauricio `_. 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:* - :class:`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 :ref:`upgrade_2.0` for the details. *Changes:* - No longer add ``error`` and ``error_traceback``. See `#55 `_ and :ref:`upgrade_2.0`. Special thanks to `@debfx `_. *Fixes:* - Fix crash when request's user is ``None`` for `django-oauth-toolkit `_. See `#56 `_. Special thanks to `@nicholasamorim `_. 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:* - Fix UUID as User pk causing issues. See `#52 `_ `#45 `_ and `#51 `_. Special thanks to `@fadedDexofan `_. 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:* - Add ``DJANGO_STRUCTLOG_LOG_USER_IN_REQUEST_FINISHED`` setting to support `Django REST framework `_. See `#37 `_. Special thanks to `@immortaleeb `_. 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:* - Add support for celery 3. See `#26 `_ and `#31 `_. Special thanks to `@chiragjn `_ and `@prik2693 `_ 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:* - Improve django uncaught exception formatting. See `#7 `_. Special thanks to `@paulstuartparker `_ 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.