{ "info": { "author": "Dan Hoerst", "author_email": "dhoerst1@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "==================\nJSON log formatter\n==================\n\nThe library helps you to store logs in JSON format. Why is it important?\nWell, it facilitates integration with **Logstash**.\n\nUsage example:\n\n.. code-block:: python\n\n import logging\n\n import json_log_formatter\n\n formatter = json_log_formatter.JSONFormatter()\n\n json_handler = logging.FileHandler(filename='/var/log/my-log.json')\n json_handler.setFormatter(formatter)\n\n logger = logging.getLogger('my_json')\n logger.addHandler(json_handler)\n logger.setLevel(logging.INFO)\n\n logger.info('Sign up', extra={'referral_code': '52d6ce'})\n\nThe log file will contain the following log record (inline).\n\n.. code-block:: json\n\n {\n \"message\": \"Sign up\",\n \"time\": \"2015-09-01T06:06:26.524448\",\n \"referral_code\": \"52d6ce\"\n }\n\nJSON libraries\n--------------\n\nYou can use **ujson** or **simplejson** instead of built-in **json** library.\nThey are faster and can serialize ``Decimal`` values.\n\n.. code-block:: python\n\n import json_log_formatter\n import ujson\n\n formatter = json_log_formatter.JSONFormatter()\n formatter.json_lib = ujson\n\nDjango integration\n------------------\n\nHere is an example of how the JSON formatter can be used with Django.\n\n.. code-block:: python\n\n LOGGING['formatters']['json'] = {\n '()': 'json_log_formatter.JSONFormatter',\n }\n LOGGING['handlers']['json_file'] = {\n 'level': 'INFO',\n 'class': 'logging.FileHandler',\n 'filename': '/var/log/my-log.json',\n 'formatter': 'json',\n }\n LOGGING['loggers']['my_json'] = {\n 'handlers': ['json_file'],\n 'level': 'INFO',\n }\n\nLet's try to log something.\n\n.. code-block:: python\n\n import logging\n\n logger = logging.getLogger('my_json')\n\n logger.info('Sign up', extra={'referral_code': '52d6ce'})\n\nCustom formatter\n----------------\n\nYou will likely need a custom log format. For instance, you want to log\na user ID, an IP address and ``time`` as ``django.utils.timezone.now()``.\nTo do so you should override ``JSONFormatter.json_record()``.\n\n.. code-block:: python\n\n class CustomisedJSONFormatter(json_log_formatter.JSONFormatter):\n def json_record(self, message, extra, record):\n extra['message'] = message\n extra['user_id'] = current_user_id()\n extra['ip'] = current_ip()\n if 'time' not in extra:\n extra['time'] = django.utils.timezone.now()\n return extra\n\nLet's say you want ``datetime`` to be serialized as timestamp.\nThen you should use **ujson** (which does it by default) and disable\nISO8601 date mutation.\n\n.. code-block:: python\n\n class CustomisedJSONFormatter(json_log_formatter.JSONFormatter):\n json_lib = ujson\n\n def mutate_json_record(self, json_record):\n return json_record\n\nTests\n-----\n\n.. code-block:: console\n\n $ pip install -r requirements.txt\n $ tox", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/danhoerst/json-log-formatter", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "django-log-formatter-json", "package_url": "https://pypi.org/project/django-log-formatter-json/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-log-formatter-json/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/danhoerst/json-log-formatter" }, "release_url": "https://pypi.org/project/django-log-formatter-json/0.2.0/", "requires_dist": null, "requires_python": null, "summary": "Django JSON log formatter", "version": "0.2.0" }, "last_serial": 2182217, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "db5e008e886c15058e5cd9a27cd411cc", "sha256": "86606aaf838cbfb9f52aee2a828b0ec41825b525bf04813d4e10e7ce04420bec" }, "downloads": -1, "filename": "django-log-formatter-json-0.1.0.tar.gz", "has_sig": false, "md5_digest": "db5e008e886c15058e5cd9a27cd411cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2810, "upload_time": "2016-06-22T22:08:45", "url": "https://files.pythonhosted.org/packages/f8/28/697fbf041c0f38b7e71a7c4bf4666d2dabf7ce8922a6759dcbe847bbc74c/django-log-formatter-json-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "baf0ce2d7ef7803ea66715ebaacdb357", "sha256": "8c7223b9af8d5111821b4b3be4d7346daed746f322f894768a918c58bf1f4bb3" }, "downloads": -1, "filename": "django-log-formatter-json-0.2.0.tar.gz", "has_sig": false, "md5_digest": "baf0ce2d7ef7803ea66715ebaacdb357", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2818, "upload_time": "2016-06-22T22:12:05", "url": "https://files.pythonhosted.org/packages/42/76/a92d3887c501e8eda3406314b11fcb2b0c968921eb114ac50af2f7d7e6c7/django-log-formatter-json-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "baf0ce2d7ef7803ea66715ebaacdb357", "sha256": "8c7223b9af8d5111821b4b3be4d7346daed746f322f894768a918c58bf1f4bb3" }, "downloads": -1, "filename": "django-log-formatter-json-0.2.0.tar.gz", "has_sig": false, "md5_digest": "baf0ce2d7ef7803ea66715ebaacdb357", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2818, "upload_time": "2016-06-22T22:12:05", "url": "https://files.pythonhosted.org/packages/42/76/a92d3887c501e8eda3406314b11fcb2b0c968921eb114ac50af2f7d7e6c7/django-log-formatter-json-0.2.0.tar.gz" } ] }