{ "info": { "author": "Craig Weber", "author_email": "crgwbr@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: ISC License (ISCL)", "Operating System :: MacOS :: MacOS X", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "===============================\nPython Syslog over TCP/TLS\n===============================\n\n| |build| |license| |kit| |format|\n\nThis library allows sending syslog messages over TCP and TLS, similar to how Python's built-in `SysLogHandler `_ sends log lines over UDP. Since TCP isn't fire-and-forget like UDP, this library uses a daemon thread to send log-lines in the background without blocking the main application thread. Shutdown of the main process, however, is blocked until all log lines in the send-queue have been sent.\n\n\nInstallation\n============\n\nThe documentation below assumes you're configuring the library to send logging to `Papertrail `_, since Papertrail is a commonly used rsyslog provider that supports TCP/TLS connections. The same instructions should be applicable to any TCP/TLS syslog listener.\n\n\nObtain the TLS CA Certificates\n------------------------------\n\nDownload the syslog listener's `TLS certificates file `_ in PEM format and save it somewhere. For example:\n\n.. code:: bash\n\n curl -o /path/to/papertrail-bundle.pem https://papertrailapp.com/tools/papertrail-bundle.pem\n\nThis step isn't needed is you aren't planning to validate the listener's certificate, but you should always validate the certificate. Otherwise, you might as well continue using syslog over UDP.\n\n\nSetup: Django\n-------------\n\nThe below sample code, when placed in your project's ``settings.py`` file, configures Django's logging framework.\n\n.. code:: python\n\n import ssl\n\n syslog_host = 'logsX.papertrailapp.com'\n syslog_port = 55555\n syslog_cert_path = '/path/to/papertrail-bundle.pem'\n\n LOGGING = {\n 'version': 1,\n 'formatters': {\n 'simple': {\n 'format': '%(asctime)s django %(name)s: %(levelname)s %(message)s',\n 'datefmt': '%Y-%m-%dT%H:%M:%S',\n },\n },\n 'handlers': {\n 'syslog': {\n 'level': 'INFO',\n 'class': 'tlssyslog.handlers.TLSSysLogHandler',\n 'formatter': 'simple',\n 'address': (syslog_host, syslog_port),\n 'ssl_kwargs': {\n 'cert_reqs': ssl.CERT_REQUIRED,\n 'ssl_version': ssl.PROTOCOL_TLS,\n 'ca_certs': syslog_cert_path,\n },\n },\n },\n 'root': {\n 'handlers': ['syslog'],\n 'level': 'INFO',\n }\n }\n\n\nSetup: Generic Python Application\n---------------------------------\n\nThe below sample code configures Python's logging framework.\n\n.. code:: python\n\n import logging.config\n import ssl\n\n syslog_host = 'logsX.papertrailapp.com'\n syslog_port = 55555\n syslog_cert_path = '/path/to/papertrail-bundle.pem'\n\n logging.config.dictConfig({\n 'version': 1,\n 'formatters': {\n 'simple': {\n 'format': '%(asctime)s django %(name)s: %(levelname)s %(message)s',\n 'datefmt': '%Y-%m-%dT%H:%M:%S',\n },\n },\n 'handlers': {\n 'syslog': {\n 'level': 'INFO',\n 'class': 'tlssyslog.handlers.TLSSysLogHandler',\n 'formatter': 'simple',\n 'address': (syslog_host, syslog_port),\n 'ssl_kwargs': {\n 'cert_reqs': ssl.CERT_REQUIRED,\n 'ssl_version': ssl.PROTOCOL_TLS,\n 'ca_certs': syslog_cert_path,\n },\n },\n },\n 'root': {\n 'handlers': ['syslog'],\n 'level': 'INFO',\n }\n })\n\n\nChangelog\n=========\n\n0.2.0\n------------------\n- Add support for Django 2.1\n- Add support for Python 3.7\n- Migrate from Sentry's old SDK (raven) to their new SDK (sentry-sdk).\n\n0.1.3\n------------------\n- Improves durability by better handling error conditions involving OSErrors thrown when opening the syslog collector socket.\n\n0.1.2\n------------------\n- Fix issue where log lines weren't always completely sent over the socket connection, causing them to be lost.\n- Adds better error handling via [Raven/Sentry](https://docs.sentry.io/clients/python/) (if installed) upon error in the socket send worker thread.\n\n0.1.1\n------------------\n- Fix issue with forked processes not being able to log due to process copy-on-write behavior.\n - After a process fork occurs, the previously created queue and daemon thread are invalidated and recreated (for the child process only).\n - Uses the process PID to detect when a fork has occurred.\n\n0.1.0\n------------------\n- Initial release.\n\n\n.. |build| image:: https://gitlab.com/thelabnyc/python-tls-syslog/badges/master/build.svg\n :target: https://gitlab.com/thelabnyc/python-tls-syslog/commits/master\n.. |license| image:: https://img.shields.io/pypi/l/python-tls-syslog.svg\n :target: https://pypi.python.org/pypi/\n.. |kit| image:: https://badge.fury.io/py/python-tls-syslog.svg\n :target: https://pypi.python.org/pypi/python-tls-syslog\n.. |format| image:: https://img.shields.io/pypi/format/python-tls-syslog.svg\n :target: https://pypi.python.org/pypi/python-tls-syslog\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/thelabnyc/python-tls-syslog", "keywords": "", "license": "ISC", "maintainer": "", "maintainer_email": "", "name": "tls-syslog", "package_url": "https://pypi.org/project/tls-syslog/", "platform": "", "project_url": "https://pypi.org/project/tls-syslog/", "project_urls": { "Homepage": "https://gitlab.com/thelabnyc/python-tls-syslog" }, "release_url": "https://pypi.org/project/tls-syslog/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "Send syslog data over a TCP/TLS socket.", "version": "0.2.0" }, "last_serial": 4540072, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "5ed148fb1ed80b1f681103ee61df64d9", "sha256": "3c51bf921d16fe2e94337b9e8438cb084367f9e011377486640160b2d6737818" }, "downloads": -1, "filename": "tls_syslog-0.1.0-py3-none-any.whl", "has_sig": true, "md5_digest": "5ed148fb1ed80b1f681103ee61df64d9", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9766, "upload_time": "2018-01-23T22:05:09", "url": "https://files.pythonhosted.org/packages/73/87/a635ee33509f865e53a445280c725872206b75ee98385a00fbb779e379cb/tls_syslog-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a59672875e8bc4936378b38237466356", "sha256": "c4fac90017f19f1a4ca6dc8f087325ec3aa4ffc737c6a574a2bc5ddf8940fb3d" }, "downloads": -1, "filename": "tls-syslog-0.1.0.tar.gz", "has_sig": true, "md5_digest": "a59672875e8bc4936378b38237466356", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7410, "upload_time": "2018-01-23T22:05:05", "url": "https://files.pythonhosted.org/packages/2f/a4/7ff4e187c73f87d17e45be25760f9f595a8ce5e994ae6d1b02b677a7bd0d/tls-syslog-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "34bdc40fde74093b5910198da67b4030", "sha256": "1cfc2a89157d67802e9ee09e6f2a31d219f0c36d46f0e869872ccb229ec67ce6" }, "downloads": -1, "filename": "tls_syslog-0.1.1-py3-none-any.whl", "has_sig": true, "md5_digest": "34bdc40fde74093b5910198da67b4030", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 10612, "upload_time": "2018-02-28T19:30:43", "url": "https://files.pythonhosted.org/packages/be/6f/7178885300dfbc4203686eb90bffd04b5c01562a6df32d0275159a5a7a93/tls_syslog-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "93750ae53d94d89fba8cb65409954927", "sha256": "dbe2fa83992a8e061d06b33307b67af6cd3352155b830c4c3711179d5a39a071" }, "downloads": -1, "filename": "tls-syslog-0.1.1.tar.gz", "has_sig": true, "md5_digest": "93750ae53d94d89fba8cb65409954927", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8214, "upload_time": "2018-02-28T19:30:40", "url": "https://files.pythonhosted.org/packages/0d/b5/c76b390e8b46346acc6025defaa80185342bb645e1605bab8d5c62ebc0e0/tls-syslog-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "de549b7727e936996063bc4a02d241bf", "sha256": "7b1ac1dd95da13a9615a4899acd1043b1bd172b47184b213ded6bcdeef1f5a8b" }, "downloads": -1, "filename": "tls_syslog-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "de549b7727e936996063bc4a02d241bf", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 10917, "upload_time": "2018-05-02T20:07:43", "url": "https://files.pythonhosted.org/packages/61/c0/608c0017ad7ed6c0019ec0c7ac4b1e2ecfef67287e23bc7ffbcc0f67a353/tls_syslog-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e30d008e196decd99c7b0e5098acdebd", "sha256": "15138c2a9b14541aeddbda90b44a2953611f088a3e9f5090dcfcf4d3e187d135" }, "downloads": -1, "filename": "tls-syslog-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e30d008e196decd99c7b0e5098acdebd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8440, "upload_time": "2018-05-02T20:07:35", "url": "https://files.pythonhosted.org/packages/de/39/a21093f5fd3a769c4d7475dc344c838e6f53df46e54ce5a4035ca6262baa/tls-syslog-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "672718cc711593dc17c55cbcc1d55918", "sha256": "e7996295895e898ae0a318055fd89f35ba3ff9edadcd60fe196f7c7e77331d3c" }, "downloads": -1, "filename": "tls_syslog-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "672718cc711593dc17c55cbcc1d55918", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 11342, "upload_time": "2018-06-04T16:24:19", "url": "https://files.pythonhosted.org/packages/1d/bd/967a66e818e8d8dec24f24a4867330648ef53f0e238051e0341ffdce5472/tls_syslog-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "579cd242fd49320b32342f36f23a71db", "sha256": "5f76f364b8e3b34014a07b9c81cf6064aea520ed2580cf526f7dc59b92311588" }, "downloads": -1, "filename": "tls-syslog-0.1.3.tar.gz", "has_sig": false, "md5_digest": "579cd242fd49320b32342f36f23a71db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8838, "upload_time": "2018-06-04T16:24:18", "url": "https://files.pythonhosted.org/packages/fd/80/5a769df7f306594d5f0d062aab4b2fb894e5f7dd08c7fb6fbea2a813b1a3/tls-syslog-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "01842ce198104b9c8c1e4926685117f3", "sha256": "da057b858122f031d521a18b13d6ba7eff024e8c24c1accba50db94bacb5113e" }, "downloads": -1, "filename": "tls_syslog-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "01842ce198104b9c8c1e4926685117f3", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 8769, "upload_time": "2018-11-28T20:06:43", "url": "https://files.pythonhosted.org/packages/73/d8/6074a6112165cce466ad7d17265d8357b38ab099518766dc3aa2ff6f5ef8/tls_syslog-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24dfda462f4db2dd79f97366a2d72b67", "sha256": "dde46eac8437850c77954f8257f0092f9b8785a14b9343bbcff2cc52a6511e3d" }, "downloads": -1, "filename": "tls-syslog-0.2.0.tar.gz", "has_sig": false, "md5_digest": "24dfda462f4db2dd79f97366a2d72b67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8286, "upload_time": "2018-11-28T20:06:41", "url": "https://files.pythonhosted.org/packages/8e/0f/9439f97f23679b6b4ac4d8a5270dd62d583858595a38a6ce278a57a718f5/tls-syslog-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "01842ce198104b9c8c1e4926685117f3", "sha256": "da057b858122f031d521a18b13d6ba7eff024e8c24c1accba50db94bacb5113e" }, "downloads": -1, "filename": "tls_syslog-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "01842ce198104b9c8c1e4926685117f3", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 8769, "upload_time": "2018-11-28T20:06:43", "url": "https://files.pythonhosted.org/packages/73/d8/6074a6112165cce466ad7d17265d8357b38ab099518766dc3aa2ff6f5ef8/tls_syslog-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24dfda462f4db2dd79f97366a2d72b67", "sha256": "dde46eac8437850c77954f8257f0092f9b8785a14b9343bbcff2cc52a6511e3d" }, "downloads": -1, "filename": "tls-syslog-0.2.0.tar.gz", "has_sig": false, "md5_digest": "24dfda462f4db2dd79f97366a2d72b67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8286, "upload_time": "2018-11-28T20:06:41", "url": "https://files.pythonhosted.org/packages/8e/0f/9439f97f23679b6b4ac4d8a5270dd62d583858595a38a6ce278a57a718f5/tls-syslog-0.2.0.tar.gz" } ] }