{
"info": {
"author": "Jules Robichaud-Gagnon",
"author_email": "j.robichaudg+pypi@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Framework :: Django",
"Framework :: Django :: 1.11",
"Framework :: Django :: 2.0",
"Framework :: Django :: 2.1",
"Framework :: Django :: 2.2",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: System :: Logging"
],
"description": ".. inclusion-marker-introduction-begin\n\ndjango-structlog\n================\n\n| |pypi| |wheels| |build-status| |docs| |coverage| |open_issues| |pull_requests|\n| |django| |python| |license| |black|\n| |watchers| |stars| |forks|\n\n.. |build-status| image:: https://secure.travis-ci.org/jrobichaud/django-structlog.svg?branch=master\n :target: https://travis-ci.org/jrobichaud/django-structlog\n :alt: Build Status\n\n.. |pypi| image:: https://img.shields.io/pypi/v/django-structlog.svg\n :target: https://pypi.org/project/django-structlog/\n :alt: PyPI version\n\n.. |docs| image:: https://readthedocs.org/projects/django-structlog/badge/?version=latest\n :target: https://django-structlog.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. |coverage| image:: https://img.shields.io/codecov/c/github/jrobichaud/django-structlog.svg\n :target: https://codecov.io/gh/jrobichaud/django-structlog\n :alt: codecov\n\n.. |python| image:: https://img.shields.io/pypi/pyversions/django-structlog.svg\n :target: https://pypi.org/project/django-structlog/\n :alt: Supported Python versions\n\n.. |license| image:: https://img.shields.io/pypi/l/django-structlog.svg\n :target: https://github.com/jrobichaud/django-structlog/blob/master/LICENSE.rst\n :alt: License\n\n.. |open_issues| image:: https://img.shields.io/github/issues/jrobichaud/django-structlog.svg\n :target: https://github.com/jrobichaud/django-structlog/issues\n :alt: GitHub issues\n\n.. |django| image:: https://img.shields.io/pypi/djversions/django-structlog.svg\n :target: https://pypi.org/project/django-structlog/\n :alt: PyPI - Django Version\n\n.. |pull_requests| image:: https://img.shields.io/github/issues-pr/jrobichaud/django-structlog.svg\n :target: https://github.com/jrobichaud/django-structlog/pulls\n :alt: GitHub pull requests\n\n.. |forks| image:: https://img.shields.io/github/forks/jrobichaud/django-structlog.svg?style=social\n :target: https://github.com/jrobichaud/django-structlog/\n :alt: GitHub forks\n\n.. |stars| image:: https://img.shields.io/github/stars/jrobichaud/django-structlog.svg?style=social\n :target: https://github.com/jrobichaud/django-structlog/\n :alt: GitHub stars\n\n.. |watchers| image:: https://img.shields.io/github/watchers/jrobichaud/django-structlog.svg?style=social\n :target: https://github.com/jrobichaud/django-structlog/\n :alt: GitHub watchers\n\n.. |wheels| image:: https://img.shields.io/pypi/wheel/django-structlog.svg\n :target: https://pypi.org/project/django-structlog/\n :alt: PyPI - Wheel\n\n.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/python/black\n :alt: Black\n\n\ndjango-structlog is a structured logging integration for `Django `_ project using `structlog `_\n\nLogging will then produce additional cohesive metadata on each logs that makes it easier to track events or incidents.\n\n\nAdditional Popular Integrations\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- `Django REST framework `_ is supported by default;\n- `Celery `_'s task logging requires additional configurations, see `documentation `_ for details.\n\n\nLogging comparison\n^^^^^^^^^^^^^^^^^^\n\nStandard logging:\n~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n >>> import logging\n >>> logger = logging.get_logger(__name__)\n >>> logger.info(\"An error occurred\")\n\n.. code-block:: bash\n\n An error occurred\n\nWell... ok\n\nWith django-structlog and flat_line:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n >>> import structlog\n >>> logger = structlog.get_logger(__name__)\n >>> logger.info(\"an_error_occurred\", bar=\"Buz\")\n\n.. code-block:: bash\n\n timestamp='2019-04-13T19:39:31.089925Z' level='info' event='an_error_occurred' logger='my_awesome_project.my_awesome_module' request_id='3a8f801c-072b-4805-8f38-e1337f363ed4' user_id=1 ip='0.0.0.0' bar='Buz'\n\nThen you can search with commands like:\n\n.. code-block:: bash\n\n $ cat logs/flat_line.log | grep request_id='3a8f801c-072b-4805-8f38-e1337f363ed4'\n\nWith django-structlog and json\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n >>> import structlog\n >>> logger = structlog.get_logger(__name__)\n >>> logger.info(\"an_error_occurred\", bar=\"Buz\")\n\n.. code-block:: json\n\n {\"request_id\": \"3a8f801c-072b-4805-8f38-e1337f363ed4\", \"user_id\": 1, \"ip\": \"0.0.0.0\", \"event\": \"an_error_occurred\", \"timestamp\": \"2019-04-13T19:39:31.089925Z\", \"logger\": \"my_awesome_project.my_awesome_module\", \"level\": \"info\", \"bar\": \"Buz\"}\n\nThen you can search with commands like:\n\n.. code-block:: bash\n\n $ cat logs/json.log | jq '.[] | select(.request_id=\"3a8f801c-072b-4805-8f38-e1337f363ed4\")' -s\n\n.. inclusion-marker-introduction-end\n\n.. inclusion-marker-getting-started-begin\n\nGetting Started\n===============\n\nThese steps will show how to integrate the middleware to your awesome application.\n\nInstallation\n^^^^^^^^^^^^\n\nInstall the library\n\n.. code-block:: bash\n\n pip install django-structlog\n\nAdd middleware\n\n.. code-block:: python\n\n MIDDLEWARE = [\n # ...\n 'django_structlog.middlewares.RequestMiddleware',\n ]\n\nAdd appropriate structlog configuration to your ``settings.py``\n\n.. code-block:: python\n\n import structlog\n\n LOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"json_formatter\": {\n \"()\": structlog.stdlib.ProcessorFormatter,\n \"processor\": structlog.processors.JSONRenderer(),\n },\n \"plain_console\": {\n \"()\": structlog.stdlib.ProcessorFormatter,\n \"processor\": structlog.dev.ConsoleRenderer(),\n },\n \"key_value\": {\n \"()\": structlog.stdlib.ProcessorFormatter,\n \"processor\": structlog.processors.KeyValueRenderer(key_order=['timestamp', 'level', 'event', 'logger']),\n },\n },\n \"handlers\": {\n \"console\": {\n \"class\": \"logging.StreamHandler\",\n \"formatter\": \"plain_console\",\n },\n \"json_file\": {\n \"class\": \"logging.handlers.WatchedFileHandler\",\n \"filename\": \"logs/json.log\",\n \"formatter\": \"json_formatter\",\n },\n \"flat_line_file\": {\n \"class\": \"logging.handlers.WatchedFileHandler\",\n \"filename\": \"logs/flat_line.log\",\n \"formatter\": \"key_value\",\n },\n },\n \"loggers\": {\n \"django_structlog\": {\n \"handlers\": [\"console\", \"flat_line_file\", \"json_file\"],\n \"level\": \"INFO\",\n },\n \"django_structlog_demo_project\": {\n \"handlers\": [\"console\", \"flat_line_file\", \"json_file\"],\n \"level\": \"INFO\",\n },\n }\n }\n\n structlog.configure(\n processors=[\n structlog.stdlib.filter_by_level,\n structlog.processors.TimeStamper(fmt=\"iso\"),\n structlog.stdlib.add_logger_name,\n structlog.stdlib.add_log_level,\n structlog.stdlib.PositionalArgumentsFormatter(),\n structlog.processors.StackInfoRenderer(),\n structlog.processors.format_exc_info,\n structlog.processors.UnicodeDecoder(),\n structlog.processors.ExceptionPrettyPrinter(),\n structlog.stdlib.ProcessorFormatter.wrap_for_formatter,\n ],\n context_class=structlog.threadlocal.wrap_dict(dict),\n logger_factory=structlog.stdlib.LoggerFactory(),\n wrapper_class=structlog.stdlib.BoundLogger,\n cache_logger_on_first_use=True,\n )\n\nStart logging with ``structlog`` instead of ``logging``.\n\n.. code-block:: python\n\n import structlog\n logger = structlog.get_logger(__name__)\n\n.. _django_signals:\n\nExtending Request Log Metadata\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nBy default only a ``request_id`` and the ``user_id`` are bound from the request but pertinent log metadata may vary from a project to another.\n\nIf you need to add more metadata from the request you can implement a convenient signal receiver to bind them.\n\n.. code-block:: python\n\n from django.dispatch import receiver\n\n from django_structlog.signals import bind_extra_request_metadata\n\n\n @receiver(bind_extra_request_metadata)\n def bind_user_email(request, logger, **kwargs):\n logger.bind(user_email=getattr(request.user, 'email', ''))\n\n\n.. inclusion-marker-getting-started-end\n\n.. inclusion-marker-example-outputs-begin\n\nExample outputs\n===============\n\nFlat lines file (\\ ``logs/flat_lines.log``\\ )\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: bash\n\n timestamp='2019-04-13T19:39:29.321453Z' level='info' event='request_started' logger='django_structlog.middlewares.request' request_id='c53dff1d-3fc5-4257-a78a-9a567c937561' user_id=1 ip='0.0.0.0' request= user_agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'\n timestamp='2019-04-13T19:39:29.345207Z' level='info' event='request_finished' logger='django_structlog.middlewares.request' request_id='c53dff1d-3fc5-4257-a78a-9a567c937561' user_id=1 ip='0.0.0.0' code=200\n timestamp='2019-04-13T19:39:31.086155Z' level='info' event='request_started' logger='django_structlog.middlewares.request' request_id='3a8f801c-072b-4805-8f38-e1337f363ed4' user_id=1 ip='0.0.0.0' request= user_agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'\n timestamp='2019-04-13T19:39:31.089925Z' level='info' event='Enqueuing successful task' logger='django_structlog_demo_project.home.views' request_id='3a8f801c-072b-4805-8f38-e1337f363ed4' user_id=1 ip='0.0.0.0'\n timestamp='2019-04-13T19:39:31.147590Z' level='info' event='task_enqueued' logger='django_structlog.middlewares.celery' request_id='3a8f801c-072b-4805-8f38-e1337f363ed4' user_id=1 ip='0.0.0.0' child_task_id='6b11fd80-3cdf-4de5-acc2-3fd4633aa654'\n timestamp='2019-04-13T19:39:31.153081Z' level='info' event='This is a successful task' logger='django_structlog_demo_project.taskapp.celery' task_id='6b11fd80-3cdf-4de5-acc2-3fd4633aa654' request_id='3a8f801c-072b-4805-8f38-e1337f363ed4' user_id=1 ip='0.0.0.0'\n timestamp='2019-04-13T19:39:31.160043Z' level='info' event='request_finished' logger='django_structlog.middlewares.request' request_id='3a8f801c-072b-4805-8f38-e1337f363ed4' user_id=1 ip='0.0.0.0' code=201\n timestamp='2019-04-13T19:39:31.162372Z' level='info' event='task_succeed' logger='django_structlog.middlewares.celery' task_id='6b11fd80-3cdf-4de5-acc2-3fd4633aa654' request_id='3a8f801c-072b-4805-8f38-e1337f363ed4' user_id=1 ip='0.0.0.0' result='None'\n\nJson file (\\ ``logs/json.log``\\ )\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: json\n\n {\"request_id\": \"c53dff1d-3fc5-4257-a78a-9a567c937561\", \"user_id\": 1, \"ip\": \"0.0.0.0\", \"request\": \"\", \"user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36\", \"event\": \"request_started\", \"timestamp\": \"2019-04-13T19:39:29.321453Z\", \"logger\": \"django_structlog.middlewares.request\", \"level\": \"info\"}\n {\"request_id\": \"c53dff1d-3fc5-4257-a78a-9a567c937561\", \"user_id\": 1, \"ip\": \"0.0.0.0\", \"code\": 200, \"event\": \"request_finished\", \"timestamp\": \"2019-04-13T19:39:29.345207Z\", \"logger\": \"django_structlog.middlewares.request\", \"level\": \"info\"}\n {\"request_id\": \"3a8f801c-072b-4805-8f38-e1337f363ed4\", \"user_id\": 1, \"ip\": \"0.0.0.0\", \"request\": \"\", \"user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36\", \"event\": \"request_started\", \"timestamp\": \"2019-04-13T19:39:31.086155Z\", \"logger\": \"django_structlog.middlewares.request\", \"level\": \"info\"}\n {\"request_id\": \"3a8f801c-072b-4805-8f38-e1337f363ed4\", \"user_id\": 1, \"ip\": \"0.0.0.0\", \"event\": \"Enqueuing successful task\", \"timestamp\": \"2019-04-13T19:39:31.089925Z\", \"logger\": \"django_structlog_demo_project.home.views\", \"level\": \"info\"}\n {\"request_id\": \"3a8f801c-072b-4805-8f38-e1337f363ed4\", \"user_id\": 1, \"ip\": \"0.0.0.0\", \"child_task_id\": \"6b11fd80-3cdf-4de5-acc2-3fd4633aa654\", \"event\": \"task_enqueued\", \"timestamp\": \"2019-04-13T19:39:31.147590Z\", \"logger\": \"django_structlog.middlewares.celery\", \"level\": \"info\"}\n {\"task_id\": \"6b11fd80-3cdf-4de5-acc2-3fd4633aa654\", \"request_id\": \"3a8f801c-072b-4805-8f38-e1337f363ed4\", \"user_id\": 1, \"ip\": \"0.0.0.0\", \"event\": \"This is a successful task\", \"timestamp\": \"2019-04-13T19:39:31.153081Z\", \"logger\": \"django_structlog_demo_project.taskapp.celery\", \"level\": \"info\"}\n {\"request_id\": \"3a8f801c-072b-4805-8f38-e1337f363ed4\", \"user_id\": 1, \"ip\": \"0.0.0.0\", \"code\": 201, \"event\": \"request_finished\", \"timestamp\": \"2019-04-13T19:39:31.160043Z\", \"logger\": \"django_structlog.middlewares.request\", \"level\": \"info\"}\n {\"task_id\": \"6b11fd80-3cdf-4de5-acc2-3fd4633aa654\", \"request_id\": \"3a8f801c-072b-4805-8f38-e1337f363ed4\", \"user_id\": 1, \"ip\": \"0.0.0.0\", \"result\": \"None\", \"event\": \"task_succeed\", \"timestamp\": \"2019-04-13T19:39:31.162372Z\", \"logger\": \"django_structlog.middlewares.celery\", \"level\": \"info\"}\n\n.. inclusion-marker-example-outputs-end\n\n.. inclusion-marker-running-tests-begin\n\nRunning the tests\n=================\n\nNote: For the moment redis is needed to run the tests. The easiest way start docker's demo.\n\n.. code-block:: bash\n\n docker-compose up --build\n\nIn another shell\n\n.. code-block:: bash\n\n pip install -r requirements/base.txt\n pytest\n\n.. inclusion-marker-running-tests-end\n\n\n.. inclusion-marker-demo-begin\n\nDemo app\n========\n\n.. code-block:: bash\n\n docker-compose up --build\n\nOpen ``http://0.0.0.0:8000/`` in your browser.\n\nNavigate while looking into the log files and shell's output.\n\n.. inclusion-marker-demo-end\n\n\n.. inclusion-marker-authors-begin\n\nAuthors\n=======\n\n\n* **Jules Robichaud-Gagnon** - *Initial work* - `jrobichaud `_\n\nSee also the list of `contributors `_ who participated in this project.\n\n.. inclusion-marker-authors-end\n\n\n.. inclusion-marker-acknowledgements-begin\n\nAcknowledgments\n===============\n\n* Big thanks to `@ferd `_ for his `bad opinions `_ that inspired the author enough to spend time on this library.\n* `This issue `_ helped the author to figure out how to integrate ``structlog`` in Django.\n* `This stack overflow question `_ was also helpful.\n\n.. inclusion-marker-acknowledgements-end\n\nLicense\n=======\n\nThis project is licensed under the MIT License - see the `LICENSE `_ file for details\n\n\n",
"description_content_type": "text/x-rst",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/jrobichaud/django-structlog",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "django-structlog",
"package_url": "https://pypi.org/project/django-structlog/",
"platform": "",
"project_url": "https://pypi.org/project/django-structlog/",
"project_urls": {
"Homepage": "https://github.com/jrobichaud/django-structlog"
},
"release_url": "https://pypi.org/project/django-structlog/1.3.3/",
"requires_dist": [
"django (>=1.11)",
"structlog",
"django-ipware"
],
"requires_python": "",
"summary": "Structured Logging for Django",
"version": "1.3.3"
},
"last_serial": 5934702,
"releases": {
"1.0": [
{
"comment_text": "",
"digests": {
"md5": "9b03a6b84d46dff81e09bc82861922b2",
"sha256": "cd3558073f119f88461db4d46a22b5a3a47869ad90b7cbd4c23803fea114b449"
},
"downloads": -1,
"filename": "django_structlog-1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9b03a6b84d46dff81e09bc82861922b2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5597,
"upload_time": "2019-04-13T23:25:10",
"url": "https://files.pythonhosted.org/packages/53/56/cad61704748f3d1ad06154a938633a5ef0ede4c5be3c8cb4ce7470e61d00/django_structlog-1.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "92b725320b17f0ba4bfa98be278f25c5",
"sha256": "8afd777759cf3e397b002a1e94730913699a0ae67c62bb87da06a1af555f83da"
},
"downloads": -1,
"filename": "django-structlog-1.0.tar.gz",
"has_sig": false,
"md5_digest": "92b725320b17f0ba4bfa98be278f25c5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4793,
"upload_time": "2019-04-13T23:25:12",
"url": "https://files.pythonhosted.org/packages/9f/42/38b7fdb2414455e94b5980706486058ddab37f7a3c3791c9460efb22cd8d/django-structlog-1.0.tar.gz"
}
],
"1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "af620f9b2aff4f7c2d5b183bae441734",
"sha256": "6c07b4f1658241f4942401b48060821b3ce0e5d0e99dc49d24862104372a55eb"
},
"downloads": -1,
"filename": "django_structlog-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "af620f9b2aff4f7c2d5b183bae441734",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5621,
"upload_time": "2019-04-13T23:37:57",
"url": "https://files.pythonhosted.org/packages/60/64/357e1d35ee9ebad27eb38bc2c688a88c757b824c383462f1f78910ad7b74/django_structlog-1.0.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "252082b29de020528fb991797228dc7b",
"sha256": "592b80de2f64d8fb098e8092906ab149e95eabd3add54312f64d50c81c74116f"
},
"downloads": -1,
"filename": "django-structlog-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "252082b29de020528fb991797228dc7b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4799,
"upload_time": "2019-04-13T23:37:58",
"url": "https://files.pythonhosted.org/packages/72/9a/309873b56408846d11ea393baffc6438a372884fd394d75ddfb5f8a62dbe/django-structlog-1.0.1.tar.gz"
}
],
"1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "1d2f5e69fda738bfa523140cc9d23a16",
"sha256": "f0e747b32d56d461aae527478a2daddf54a4f5b98d98e6d566c03185a7d711a9"
},
"downloads": -1,
"filename": "django_structlog-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1d2f5e69fda738bfa523140cc9d23a16",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5623,
"upload_time": "2019-04-13T23:42:43",
"url": "https://files.pythonhosted.org/packages/bb/1c/8c216f1f35a586f97033ea647080066aed81907661293434342a9c4d4413/django_structlog-1.0.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "5df23fafe30562383847d31085fe07ff",
"sha256": "d44cc464b48ac0de3a9c079f01bec01df1487b2804de779c9dc2ccba68d41879"
},
"downloads": -1,
"filename": "django-structlog-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "5df23fafe30562383847d31085fe07ff",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4799,
"upload_time": "2019-04-13T23:42:44",
"url": "https://files.pythonhosted.org/packages/cc/2a/fd0d8f8c20940150c2cd5ef87ca40a64aad9907eef8d851b0f63c0d13191/django-structlog-1.0.2.tar.gz"
}
],
"1.0.3": [
{
"comment_text": "",
"digests": {
"md5": "821c20a997b44ee23f74f692c36ebfe4",
"sha256": "cb25c04f934ebb8ca246f0abe36332ac8b555be506475165b87ccc71d2cc6631"
},
"downloads": -1,
"filename": "django_structlog-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "821c20a997b44ee23f74f692c36ebfe4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5875,
"upload_time": "2019-04-14T11:16:59",
"url": "https://files.pythonhosted.org/packages/67/46/63ff895f68799d45e27160c557d1024112c6fcd9db632030ea7435b6da91/django_structlog-1.0.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "aa770bb51b670ed72d9bf4e1c5c687be",
"sha256": "de19033f0e27130614a968cf6eac0799ea27ba8b39ba87f690f29c6e99054d51"
},
"downloads": -1,
"filename": "django-structlog-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "aa770bb51b670ed72d9bf4e1c5c687be",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5077,
"upload_time": "2019-04-14T11:17:01",
"url": "https://files.pythonhosted.org/packages/4a/81/e6584dd9aad010c8d5321234824aaa267fa33b68c4dcea91feedb8e0bbf9/django-structlog-1.0.3.tar.gz"
}
],
"1.0.4": [
{
"comment_text": "",
"digests": {
"md5": "67813f28c64f2ae7002af407f54f8187",
"sha256": "69cad92ac56397ecc53010a28a629b36c0a6bb2297762b269ea37d35c922109b"
},
"downloads": -1,
"filename": "django-structlog-1.0.4.tar.gz",
"has_sig": false,
"md5_digest": "67813f28c64f2ae7002af407f54f8187",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5050,
"upload_time": "2019-04-14T12:12:12",
"url": "https://files.pythonhosted.org/packages/2c/61/b5ba392088a729e9f6846399929f6579637dfd4ae4e23bd8b17c84ec68f4/django-structlog-1.0.4.tar.gz"
}
],
"1.0.7": [
{
"comment_text": "",
"digests": {
"md5": "cac59d677b4ca73b725cc813889ae0c9",
"sha256": "e0b7cbe179fe3eb3b180c926de90b806bd8b155d7bba02576211801a4f1c5f3a"
},
"downloads": -1,
"filename": "django-structlog-1.0.7.tar.gz",
"has_sig": false,
"md5_digest": "cac59d677b4ca73b725cc813889ae0c9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5041,
"upload_time": "2019-04-14T13:47:31",
"url": "https://files.pythonhosted.org/packages/94/8d/a9c80ad3c0824acf0b356d41c65f1e5aa1fe6f86b5d7ee059a30977663b6/django-structlog-1.0.7.tar.gz"
}
],
"1.1.0": [
{
"comment_text": "",
"digests": {
"md5": "aa48a2160c4d82a4a717238e608c0d84",
"sha256": "8b985ef7fb9c8a7e53264c73989ee8ef44005770b8c4cdf4bbb01bf0135950a8"
},
"downloads": -1,
"filename": "django-structlog-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "aa48a2160c4d82a4a717238e608c0d84",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6265,
"upload_time": "2019-04-17T03:26:11",
"url": "https://files.pythonhosted.org/packages/76/42/b1f6dc928ede144eafe187205ff4a17f3a13a90f70083b1e51d72b5e4b4b/django-structlog-1.1.0.tar.gz"
}
],
"1.1.1": [
{
"comment_text": "",
"digests": {
"md5": "ece7473d721cf3825b7e16b5b0c49396",
"sha256": "28b16de057791acf0adfb4c7f86651e835da798e6b56e1df4fc51e3a1ef598ec"
},
"downloads": -1,
"filename": "django-structlog-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "ece7473d721cf3825b7e16b5b0c49396",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6281,
"upload_time": "2019-04-19T01:12:25",
"url": "https://files.pythonhosted.org/packages/ac/f4/1d9887742912102f9e9855d00f7aa981df6bb9ec36a966be0514b516e98c/django-structlog-1.1.1.tar.gz"
}
],
"1.1.2": [
{
"comment_text": "",
"digests": {
"md5": "c0c647a695fe5539f1f280ff9d43c0f8",
"sha256": "53ac3689b4c09d7b8c205e07884ac7bca9d5b902eda21423c8d19244cc9467c8"
},
"downloads": -1,
"filename": "django-structlog-1.1.2.tar.gz",
"has_sig": false,
"md5_digest": "c0c647a695fe5539f1f280ff9d43c0f8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6412,
"upload_time": "2019-04-19T05:55:23",
"url": "https://files.pythonhosted.org/packages/70/aa/afd4df1f3a89b8cdf3d20c4b2fd7b242cd2e9e0ec5d1553b899a2f1c88e2/django-structlog-1.1.2.tar.gz"
}
],
"1.1.3": [
{
"comment_text": "",
"digests": {
"md5": "12f3ed116e494c8d19e96a21d4f1cdc7",
"sha256": "6b300e7bc0221beee73c114fa761cc7231b8587a78c9eba5a955480135fa840c"
},
"downloads": -1,
"filename": "django-structlog-1.1.3.tar.gz",
"has_sig": false,
"md5_digest": "12f3ed116e494c8d19e96a21d4f1cdc7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6934,
"upload_time": "2019-04-22T20:02:10",
"url": "https://files.pythonhosted.org/packages/b5/9e/1a45fe84f6941df23ebb8ab924157dacf65803c6198a67694b2ff28d5459/django-structlog-1.1.3.tar.gz"
}
],
"1.1.4": [
{
"comment_text": "",
"digests": {
"md5": "b311476fe14bc00b9557af9e5a2d0382",
"sha256": "a156016c3411826687a005bb248b90176d7901648e02f959476c8af601cd6c6f"
},
"downloads": -1,
"filename": "django_structlog-1.1.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b311476fe14bc00b9557af9e5a2d0382",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6558,
"upload_time": "2019-04-22T21:44:04",
"url": "https://files.pythonhosted.org/packages/df/28/dfaee7c33713bc792f9ccec2820c736339255fcc4d5469caeeef889be0c3/django_structlog-1.1.4-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "875f00274c7f0b8688ed84552b5b4d8b",
"sha256": "33bdfb76e905ca7fef61c0b1b0abd4eb2875d8d1dc36a425a4f5b7d03891afe4"
},
"downloads": -1,
"filename": "django-structlog-1.1.4.tar.gz",
"has_sig": false,
"md5_digest": "875f00274c7f0b8688ed84552b5b4d8b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6970,
"upload_time": "2019-04-22T21:44:05",
"url": "https://files.pythonhosted.org/packages/2d/04/21f870eb04afcf182fdbed389e86c4d94c4f5e3a111493851de1fadbe7d8/django-structlog-1.1.4.tar.gz"
}
],
"1.1.5": [
{
"comment_text": "",
"digests": {
"md5": "b23fe779cb3f9d78c8a93478bf0a3d08",
"sha256": "63d09ec3e0fe296f1d053b3ddb0e2a0900d0245b354fbaf2b633acf14e4bd044"
},
"downloads": -1,
"filename": "django_structlog-1.1.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b23fe779cb3f9d78c8a93478bf0a3d08",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10283,
"upload_time": "2019-05-08T05:24:00",
"url": "https://files.pythonhosted.org/packages/c7/e2/3636db58be58c8537d6af161380ac9c3da7960dc238d1f007f31732f2521/django_structlog-1.1.5-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e8bdf2438d800993a9185fb459840b26",
"sha256": "63d93e406f3414c8d66dad4f8c3ac805fce05d4c502001e6642d510dfc32af63"
},
"downloads": -1,
"filename": "django-structlog-1.1.5.tar.gz",
"has_sig": false,
"md5_digest": "e8bdf2438d800993a9185fb459840b26",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10136,
"upload_time": "2019-05-08T05:24:02",
"url": "https://files.pythonhosted.org/packages/ff/6c/6bf3f1e75ebe1df8640ade119fdb3686cba743f4ec343c2e45660dafa514/django-structlog-1.1.5.tar.gz"
}
],
"1.1.6": [
{
"comment_text": "",
"digests": {
"md5": "6ef5f321c9c6e08f662d4cc3d0a996e4",
"sha256": "da86a10fcce82b30ff5836fff5c43b1b62d1d1d19dea1dbe40afa72fa2678427"
},
"downloads": -1,
"filename": "django_structlog-1.1.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6ef5f321c9c6e08f662d4cc3d0a996e4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10294,
"upload_time": "2019-05-08T05:53:56",
"url": "https://files.pythonhosted.org/packages/82/a9/10d7e82b1b094d8f40cd1456c08b29dfb0f6438c1d13519ab32d9118450f/django_structlog-1.1.6-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a875e6c4b5b9b0fb667db6755800f40a",
"sha256": "968de2d76aa02e2ca91efa92e779759cf385de2ecb44ff39ecbd9d2527b0ead2"
},
"downloads": -1,
"filename": "django-structlog-1.1.6.tar.gz",
"has_sig": false,
"md5_digest": "a875e6c4b5b9b0fb667db6755800f40a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10146,
"upload_time": "2019-05-08T05:53:57",
"url": "https://files.pythonhosted.org/packages/62/93/b784dabd208aa849cef41caf49f7218a98e54405a5434a90c191488e2255/django-structlog-1.1.6.tar.gz"
}
],
"1.2.0": [
{
"comment_text": "",
"digests": {
"md5": "d0554f366b9a7c52ad05a3e4297356d1",
"sha256": "3adbabbb4015b046f83a6586dec9ecfe399937f0b45cb57d2424d2f1e00818c7"
},
"downloads": -1,
"filename": "django_structlog-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d0554f366b9a7c52ad05a3e4297356d1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10302,
"upload_time": "2019-05-08T13:28:29",
"url": "https://files.pythonhosted.org/packages/a9/71/f18e579f7ce8033cb02159950d7993bfa7eda6f1911b48bb0db6b9dfb723/django_structlog-1.2.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "634cfad99ece96803c95184c738c7f69",
"sha256": "f828b3baac15a5a77b605ffe528c096fa39583df811d0e355e6b2883069a606e"
},
"downloads": -1,
"filename": "django-structlog-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "634cfad99ece96803c95184c738c7f69",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10155,
"upload_time": "2019-05-08T13:28:30",
"url": "https://files.pythonhosted.org/packages/9a/4c/5ffd9db6c4f1bac3dfe6c4585b7f6db568916465c0cfed99f39510085f8f/django-structlog-1.2.0.tar.gz"
}
],
"1.2.1": [
{
"comment_text": "",
"digests": {
"md5": "77261515df15a5f783137c846187d752",
"sha256": "689191543ebf1a5049a42d0877779a43d5524aa0b482dab807805f5c448ec827"
},
"downloads": -1,
"filename": "django_structlog-1.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "77261515df15a5f783137c846187d752",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10301,
"upload_time": "2019-05-08T17:07:34",
"url": "https://files.pythonhosted.org/packages/c2/fa/86770eb8c946d980d2c5b021df551e2b07fd6d9839ae8a256bdb20206a27/django_structlog-1.2.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "95910452136994c9a267dc258f7d7910",
"sha256": "727d00392f17ba39f5c5fd338051ea0074ec1de8fc971e7ddbb837074ee814d4"
},
"downloads": -1,
"filename": "django-structlog-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "95910452136994c9a267dc258f7d7910",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10869,
"upload_time": "2019-05-08T17:07:35",
"url": "https://files.pythonhosted.org/packages/bf/da/b30c4cfd53dc72fb9b8f95231f9938e57fbf33121a27d11cad7f93c3a4d7/django-structlog-1.2.1.tar.gz"
}
],
"1.2.2": [
{
"comment_text": "",
"digests": {
"md5": "196934ac1f1365a157ce85924545c201",
"sha256": "4aed65f73108f0bc2e286cf32fa8e3665e4289cbd4acd50abfaff647282f6a1e"
},
"downloads": -1,
"filename": "django_structlog-1.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "196934ac1f1365a157ce85924545c201",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10306,
"upload_time": "2019-05-14T02:10:44",
"url": "https://files.pythonhosted.org/packages/38/aa/3c63f5006310795c9220376cbd864ce06d6c36d7d32de8c35aab31699ddf/django_structlog-1.2.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "6a07e5cf44a8d3c7838eee373ba9a8a0",
"sha256": "604bc6d379872cc639d45d9e6ae026da90dcbbf48ff5f5c4468b5326a1a0aebb"
},
"downloads": -1,
"filename": "django-structlog-1.2.2.tar.gz",
"has_sig": false,
"md5_digest": "6a07e5cf44a8d3c7838eee373ba9a8a0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10901,
"upload_time": "2019-05-14T02:10:46",
"url": "https://files.pythonhosted.org/packages/f3/db/f58a69d2fb29739ecc2798c8362571c39afa421b681cb1be5c8f14d7dc4b/django-structlog-1.2.2.tar.gz"
}
],
"1.2.3": [
{
"comment_text": "",
"digests": {
"md5": "f722361c2f9061acc356809992754551",
"sha256": "d5ab7c04f3c011d3a5c77b75c6a0fbbd1e8077ac3e84d64836f04fecdd2365f0"
},
"downloads": -1,
"filename": "django_structlog-1.2.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f722361c2f9061acc356809992754551",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10352,
"upload_time": "2019-05-18T21:29:28",
"url": "https://files.pythonhosted.org/packages/50/6b/0ee03e2edd5a98b68511471b5b59386fa893725ede43f7f67b9bf46ee4d8/django_structlog-1.2.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3eadadf7c6d975abfb3a3611a329b7c5",
"sha256": "5b6577f9b597b1bd7f473f561364116ceb1f6d7882145d35264a4704d0da055b"
},
"downloads": -1,
"filename": "django-structlog-1.2.3.tar.gz",
"has_sig": false,
"md5_digest": "3eadadf7c6d975abfb3a3611a329b7c5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10982,
"upload_time": "2019-05-18T21:29:30",
"url": "https://files.pythonhosted.org/packages/88/0d/99e56190e36908968d8d0ba7d5f548304a3df3ca75afb21c0bedb5184a4c/django-structlog-1.2.3.tar.gz"
}
],
"1.3.0": [
{
"comment_text": "",
"digests": {
"md5": "75d8be3fad4e8697cb7b62aa0c6b3284",
"sha256": "2c9fedb57931b80062a3cc8fa5018ea3d2222a2f09473ad431ec8310a613b5ed"
},
"downloads": -1,
"filename": "django_structlog-1.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "75d8be3fad4e8697cb7b62aa0c6b3284",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10498,
"upload_time": "2019-09-03T23:40:18",
"url": "https://files.pythonhosted.org/packages/19/ff/1c80e8df40c6b6eafbaf8968c594b484979f01e56a5b4b77fb5b23779d3c/django_structlog-1.3.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c4a6227252c7857fdce5478bfe11b384",
"sha256": "ade757020caaaae1056a8d80a61fc102d3c604ed3456108c81ea9e5f72683336"
},
"downloads": -1,
"filename": "django-structlog-1.3.0.tar.gz",
"has_sig": false,
"md5_digest": "c4a6227252c7857fdce5478bfe11b384",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11461,
"upload_time": "2019-09-03T23:40:20",
"url": "https://files.pythonhosted.org/packages/91/fa/12c2fb97bad52280f4a6465a7c210294a78688f0310406ddfdeec60ec357/django-structlog-1.3.0.tar.gz"
}
],
"1.3.1": [
{
"comment_text": "",
"digests": {
"md5": "75e8b7e5b56aecb3465ec3670f9fac3f",
"sha256": "553688b7cad13976ae7699ab799a1229c7709e1f7f1cdb2e7a0f9dc30fea36fe"
},
"downloads": -1,
"filename": "django_structlog-1.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "75e8b7e5b56aecb3465ec3670f9fac3f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10452,
"upload_time": "2019-09-04T11:12:42",
"url": "https://files.pythonhosted.org/packages/e7/0f/703a7e5c68a033903875e444cd375e9568f64a35e8c95e34f48964b75063/django_structlog-1.3.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "44808c09acd4ee725dcccaa5c52e68d4",
"sha256": "af6310ef9f69b400181e9eb043901d5eccea3f170cc5ae3260d03ebdb03d18b8"
},
"downloads": -1,
"filename": "django-structlog-1.3.1.tar.gz",
"has_sig": false,
"md5_digest": "44808c09acd4ee725dcccaa5c52e68d4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11417,
"upload_time": "2019-09-04T11:12:44",
"url": "https://files.pythonhosted.org/packages/a9/70/a8f9c6cfa341ecd084b48b8f5eb9bcaa765d84931eb7d1089ec2553735f4/django-structlog-1.3.1.tar.gz"
}
],
"1.3.2": [
{
"comment_text": "",
"digests": {
"md5": "0420c76e813a48cb09b15edbfc107bcf",
"sha256": "a3be4637c8b511dfb25a19a41dcbb0d5ce2b41905ce86e92f7270df4aa23f483"
},
"downloads": -1,
"filename": "django_structlog-1.3.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0420c76e813a48cb09b15edbfc107bcf",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10472,
"upload_time": "2019-09-21T23:53:16",
"url": "https://files.pythonhosted.org/packages/7e/c5/c775097e1d8873c0e330c69f05aeb51b6e20bb0e33415928e51e4b6b965e/django_structlog-1.3.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "38683e07da47c4df06e497b35e7468e6",
"sha256": "0170fcf6c3e6dc0441eb76c1ca7bff6c560dc6a4aa863c2217de3ccf9324a61b"
},
"downloads": -1,
"filename": "django-structlog-1.3.2.tar.gz",
"has_sig": false,
"md5_digest": "38683e07da47c4df06e497b35e7468e6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11433,
"upload_time": "2019-09-21T23:53:18",
"url": "https://files.pythonhosted.org/packages/93/3f/540f5a8f7b4ce2a3217ea02201ac08ec8b0b04445651b5916ec54d20aabc/django-structlog-1.3.2.tar.gz"
}
],
"1.3.3": [
{
"comment_text": "",
"digests": {
"md5": "e10061dee05bbafa1ccd3c1b22948710",
"sha256": "557e31dad9551781c26b8963fbfad904546ddb549062f719c018559d84ab4f69"
},
"downloads": -1,
"filename": "django_structlog-1.3.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e10061dee05bbafa1ccd3c1b22948710",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10577,
"upload_time": "2019-10-06T12:06:48",
"url": "https://files.pythonhosted.org/packages/bd/03/93304c4c3f87a55a32bf42d75b023bff67c59b3b28dc2ab5ad8ee2978b1c/django_structlog-1.3.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e00e87dd5d8a1f8f9b0c68117a9de914",
"sha256": "bb47419fb3a7b1210510230b3c7a5093a6c4e65b6c75aeea120a37d6d00b12d0"
},
"downloads": -1,
"filename": "django-structlog-1.3.3.tar.gz",
"has_sig": false,
"md5_digest": "e00e87dd5d8a1f8f9b0c68117a9de914",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11742,
"upload_time": "2019-10-06T12:06:50",
"url": "https://files.pythonhosted.org/packages/92/c5/fc14840f46d992e596b42bae96e3084947df9e9de16ee7dd735c291bd2c1/django-structlog-1.3.3.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "e10061dee05bbafa1ccd3c1b22948710",
"sha256": "557e31dad9551781c26b8963fbfad904546ddb549062f719c018559d84ab4f69"
},
"downloads": -1,
"filename": "django_structlog-1.3.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e10061dee05bbafa1ccd3c1b22948710",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10577,
"upload_time": "2019-10-06T12:06:48",
"url": "https://files.pythonhosted.org/packages/bd/03/93304c4c3f87a55a32bf42d75b023bff67c59b3b28dc2ab5ad8ee2978b1c/django_structlog-1.3.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e00e87dd5d8a1f8f9b0c68117a9de914",
"sha256": "bb47419fb3a7b1210510230b3c7a5093a6c4e65b6c75aeea120a37d6d00b12d0"
},
"downloads": -1,
"filename": "django-structlog-1.3.3.tar.gz",
"has_sig": false,
"md5_digest": "e00e87dd5d8a1f8f9b0c68117a9de914",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11742,
"upload_time": "2019-10-06T12:06:50",
"url": "https://files.pythonhosted.org/packages/92/c5/fc14840f46d992e596b42bae96e3084947df9e9de16ee7dd735c291bd2c1/django-structlog-1.3.3.tar.gz"
}
]
}