{ "info": { "author": "SAP", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Flask", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Logging" ], "description": "\nPython logging library to emit JSON logs in a SAP CloudFoundry environment.\n===========================================================================\n\nThis is a collection of support libraries for Python applications running on Cloud Foundry that\nserve two main purposes: provide (a) means to emit structured application log messages and (b)\ninstrument web applications of your application stack to collect request metrics.\n\nFor details on the concepts and log formats, please look at the sibling project for `java logging\nsupport `__.\n\n\nFeatures\n-----------\n\n1. Lightweight, no dependencies. Support of Python 2.7 & 3.5.\n2. Compatible with the Python **logging** module. Minimal configuration needed.\n3. Emits JSON logs (`format\n details `__).\n4. Supports **correlation-id**.\n5. Supports request instrumentation. Built in support for:\n\n * `Flask 0.1x `__\n * `Sanic 0.5.x `__\n * `Falcon `__\n * `Django `__\n * Extensible to support others\n\n6. Includes CF-specific information (space id, app id, etc.) to logs.\n7. Supports adding extra properties to JSON log object.\n\nInstallation\n------------\n\nInstall the package with pip:\n\n::\n\n pip install sap_cf_logging\n\nUsage\n-----\n\nSetting up your application\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nLogging library needs to be initialized. Depending on you application type, different initialization\nis used. You should usually do this in your application entrypoint.\n\nFor CLI applications you just need to call ``cf_logging.init()`` *once* to configure the library.\nThe library will try to configure future loggers to emit logs in JSON format.\n\nIf you are using one of the supported frameworks, check the `Configuration <#configuration>`__\nsection to see how to configure it.\n\n**Setting up the CloudFoundry environment**\n\nIn order for your logs to appear in the Kibana dashboard, you have to create an **application-logs**\nservice instance and bind it to your application.\n\n\nConfiguration\n~~~~~~~~~~~~~\n\nAfter installation use the following guide to configure the Python cf logging library.\n\nFlask\n^^^^^\n\nFirst import the ``cf_logging`` library and setup Flask logging on the application.\n\n.. code:: python\n\n from sap.cf_logging import flask_logging\n\n app = flask.Flask(__name__)\n flask_logging.init(app, logging.INFO)\n\nNext use Python\u2019s logging library\n\n.. code:: python\n\n @app.route('/')\n def root_route():\n logger = logging.getLogger('my.logger')\n logger.info('Hi')\n\n return 'ok'\n\nNote the logs generated by the application\n\nSanic\n^^^^^\n\n.. code:: python\n\n import sanic\n import logging\n\n from sanic.response import HTTPResponse\n from sap.cf_logging import sanic_logging\n from sap.cf_logging.core.constants import REQUEST_KEY\n\n app = sanic.Sanic('test.cf_logging')\n sanic_logging.init(app)\n\n @app.route('/')\n async def two(request):\n extra = {REQUEST_KEY: request}\n logging.getLogger('my.logger').debug('Hi', extra = extra)\n return HTTPResponse(body='ok')\n\n**Note**: With Sanic you need to pass the request with an ``extra`` parameter in the logging API.\nThis is needed in order to get the *correlation_id* generated at the beginning of the request or\nfetched from the HTTP headers.\n\nFalcon\n^^^^^^\n\n.. code:: python\n\n\n import falcon\n from sap.cf_logging import falcon_logging\n from sap.cf_logging.core.constants import REQUEST_KEY\n\n\n class Resource:\n def on_get(self, req, resp):\n extra = {REQUEST_KEY: req}\n logging.getLogger('my.logger').log('Resource requested', extra=extra)\n resp.media = {'name': 'Cloud Foundry'}\n\n\n app = falcon.API(middleware=[\n falcon_logging.LoggingMiddleware()\n ])\n app.add_route('/resource', Resource())\n falcon_logging.init(app)\n\nDjango\n^^^^^^\n\n.. code:: bash\n\n django-admin startproject example\n\n.. code:: python\n\n # example/settings.py\n\n MIDDLEWARES = [\n # ...,\n 'sap.cf_logging.django_logging.LoggingMiddleware'\n ]\n\n # example/wsgi.py\n\n # ...\n from sap.cf_logging import django_logging\n\n os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"sap_logtesting.settings\")\n django_logging.init()\n\n # ...\n\nCreate a new app\n\n.. code:: bash\n\n python manage.py startapp example_app\n\n.. code:: python\n\n # example_app/views.py\n\n import logging\n\n from django.http import HTTPResponse\n from sap.cf_logging.core.constants import REQUEST_KEY\n\n def index(request):\n extra = {REQUEST_KEY: request}\n logger = logging.getLogger('my.logger')\n logger.info(\"Resource requested\", extra=extra)\n return HttpResponse(\"ok\")\n\n # example_app/urls.py\n\n from django.conf.urls import url\n\n from . import views\n\n urlpatterns = [\n url('^$', views.index)\n ]\n\n # example/urls.py\n\n from django.contrib import admin\n from django.conf.urls import url, include\n\n urlpatterns = [\n url('admin/', admin.site.urls),\n url('example/', include('example_app.urls'))\n ]\n\nGeneral\n^^^^^^^\n\n.. code:: python\n\n import logging\n from sap import cf_logging\n\n cf_logging.init()\n\n logger = logging.getLogger(\"cli.logger\")\n logger.info('hi')\n\n**Notes**: All loggers set up and created before the initialization of the Cloud Foundry logging library will\nbe left untouched. When using Flask and Sanic with the logging library before and\nafter request middleware is attached, and it will capture response times for each request.\n\nSetting and getting correlation ID\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nWhen using cf_logging in a web application you don't need to set the correlation ID, because the logging library will fetch it from the HTTP headers and set it.\nFor non web applications you could set the correlation ID manually, so that the log entries can be filtered later on based on the ``correlation_id`` log property.\nIn this case the correlation ID is kept in a thread local variable and each thread should set its own correlation ID.\n\nSetting and getting the correlation_id can be done via:\n\n.. code:: python\n\n cf_logging.FRAMEWORK.context.get_correlation_id()\n cf_logging.FRAMEWORK.context.set_correlation_id(value)\n\nIf you need to get the correlation ID in a web application, take into account the framework you are using.\nIn async frameworks like Sanic and Falcon the context is stored into the request object and you need to provide the request to the call:\n\n.. code:: python\n\n cf_logging.FRAMEWORK.context.get_correlation_id(request)\n\n\nLogging sensitive data\n^^^^^^^^^^^^^^^^^^^^^^\n\nThe logging library does not log sensitive fields by default. Those fields are replaced with 'redacted' instead of their original content.\nThe following fields are considered sensitive data: ``remote_ip``, ``remote_host``, ``remote_port``, ``x_forwarded_for``, ``remote_user``, ``referer``.\nLogging of all or some of these fields can be activated by setting the following environment variables:\n\n+-----------------------------------+-----------+------------------------------------------------------------------------+\n| Environment variable | Value | Enables sensitive field |\n+===================================+===========+========================================================================+\n| ``LOG_SENSITIVE_CONNECTION_DATA`` | true | ``remote_ip``, ``remote_host``, ``remote_port``, ``x_forwarded_for`` |\n+-----------------------------------+-----------+------------------------------------------------------------------------+\n| ``LOG_REMOTE_USER`` | true | ``remote_user`` |\n+-----------------------------------+-----------+------------------------------------------------------------------------+\n| ``LOG_REFERER`` | true | ``referer`` |\n+-----------------------------------+-----------+------------------------------------------------------------------------+\n\nThis behavior matches the corresponding mechanism in the `CF Java Logging Support library `__.\n\nExamples\n~~~~~~~~\n\nFor more examples please see the tests within the ``./tests/`` directory.\n\nRequirements\n------------\n\nNo external requirements are needed to run the package.\n\nLimitations\n-----------\n\nNA\n\nKnown Issues\n------------\n\nNA\n\nHow to obtain support\n---------------------\n\nPlease open an issue on the github page.\n\nContributing\n------------\n\nPlease create a pull request and briefly describe the nature of the change. Please submit a test\ncase along with your pull request.\n\nTo-Do (upcoming changes)\n------------------------\n\nNA\n\nChangelog\n---------\n\nSee `CHANGELOG file `__.\n\nLicense\n-------\n\nCopyright (c) 2017 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed\nunder the Apache Software License, v. 2 except as noted otherwise in the `LICENSE file `__.\n\n\n\n\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/SAP/cf-python-logging-support", "keywords": "", "license": "Apache License, Version 2.0", "maintainer": "", "maintainer_email": "", "name": "sap-cf-logging", "package_url": "https://pypi.org/project/sap-cf-logging/", "platform": "any", "project_url": "https://pypi.org/project/sap-cf-logging/", "project_urls": { "Homepage": "https://github.com/SAP/cf-python-logging-support" }, "release_url": "https://pypi.org/project/sap-cf-logging/4.1.1/", "requires_dist": null, "requires_python": "", "summary": "Python logging library to emit JSON logs in a SAP CloudFoundry environment", "version": "4.1.1" }, "last_serial": 5167610, "releases": { "3.0.0": [ { "comment_text": "", "digests": { "md5": "e315c67cd74f1059d76e6a80f04ddf7b", "sha256": "8bf4a6ed97980eda0b1e9a9fbefc7074c6111b214a6895426a046c16a4d504e3" }, "downloads": -1, "filename": "sap_cf_logging-3.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e315c67cd74f1059d76e6a80f04ddf7b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24006, "upload_time": "2017-12-07T13:00:56", "url": "https://files.pythonhosted.org/packages/d7/2d/af37e0fed95e41ff8288482f48a402badaf4dc31fbe62e4f42db4d46b244/sap_cf_logging-3.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf02e2b58d58123a311bbf872c39741c", "sha256": "4ad3ed54474a4c93180bef34ee4e8663b1cbaad8f156853ce1464c52ac3e250b" }, "downloads": -1, "filename": "sap_cf_logging-3.0.0.tar.gz", "has_sig": false, "md5_digest": "cf02e2b58d58123a311bbf872c39741c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16218, "upload_time": "2017-12-07T13:00:58", "url": "https://files.pythonhosted.org/packages/16/a4/20a5d69d3ebb6342e75baa7592b57d39ad6dac4c7ba607c6dc9dd5242f77/sap_cf_logging-3.0.0.tar.gz" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "da9fb8f0a77ddca26d090f90ac13d32d", "sha256": "06271e10d02c25124018bd92ca5575e07ff84bcbca925e9dad5556cebb85df08" }, "downloads": -1, "filename": "sap_cf_logging-3.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "da9fb8f0a77ddca26d090f90ac13d32d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24025, "upload_time": "2017-12-11T07:06:12", "url": "https://files.pythonhosted.org/packages/07/73/9c05a54df2f86c5a7581ecb1409c80d3af54152befeca8676934b43ace30/sap_cf_logging-3.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "362e6b88c84ec2f06ebe5692f8eeb33e", "sha256": "3ecc6b9f7669156bc3904bcad14e647ec6e9f8958fa5d9c675e684c79d4b4c0a" }, "downloads": -1, "filename": "sap_cf_logging-3.0.1.tar.gz", "has_sig": false, "md5_digest": "362e6b88c84ec2f06ebe5692f8eeb33e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16213, "upload_time": "2017-12-11T07:06:14", "url": "https://files.pythonhosted.org/packages/a1/43/ef0c0ea69108edffe89f5ba2af15c4bdc305a846826906ee0eee9574bfd3/sap_cf_logging-3.0.1.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "a33c32cb5e6d3784b2a96c22d74a5e88", "sha256": "62201878e083d58b6bd668aa34d6ae47b5c9c32267b255aed8c8741b4eec4af0" }, "downloads": -1, "filename": "sap_cf_logging-3.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a33c32cb5e6d3784b2a96c22d74a5e88", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24469, "upload_time": "2018-01-05T05:49:32", "url": "https://files.pythonhosted.org/packages/21/f2/074526b4e42c5f501b98c600f8bdae6d6090d9a800fccc12ee04dfff6187/sap_cf_logging-3.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3ee15172cf32a1818acd397e1c8ee969", "sha256": "871a31221179063b1b68074e2bb3f766d30a9e87451237f63dee9902331acde7" }, "downloads": -1, "filename": "sap_cf_logging-3.1.0.tar.gz", "has_sig": false, "md5_digest": "3ee15172cf32a1818acd397e1c8ee969", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16300, "upload_time": "2018-01-05T05:49:35", "url": "https://files.pythonhosted.org/packages/10/55/985ea9436a6620e377d48fcaddebf4bb7cc266ea56611a9219210bb6bb5d/sap_cf_logging-3.1.0.tar.gz" } ], "3.1.1": [ { "comment_text": "", "digests": { "md5": "e277803b393b945eb65637b0062376df", "sha256": "19696ea7d9dad6fc1b62e9681e9249c1c95028cc2e806eddda24a18de395e5c8" }, "downloads": -1, "filename": "sap_cf_logging-3.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e277803b393b945eb65637b0062376df", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24475, "upload_time": "2018-03-06T11:51:37", "url": "https://files.pythonhosted.org/packages/0e/5e/a99597bb670b09c37e974a5ca353409f3ab85e63ea9d4cce767b07f89a9c/sap_cf_logging-3.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9759cfc6020299d3f2b35cacf76c670", "sha256": "8379d5ea7d8c4b55a9c65eef81331cfe96bbb43302ff61f19eef5b73ea77ba27" }, "downloads": -1, "filename": "sap_cf_logging-3.1.1.tar.gz", "has_sig": false, "md5_digest": "e9759cfc6020299d3f2b35cacf76c670", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16351, "upload_time": "2018-03-06T11:51:35", "url": "https://files.pythonhosted.org/packages/6a/c1/d227c1ad0db60a9d101d5888ce695074387a7b4d696e4946019dffe62851/sap_cf_logging-3.1.1.tar.gz" } ], "3.2.0": [ { "comment_text": "", "digests": { "md5": "575555ed261c99a1ebcdd8c81c88f200", "sha256": "b13bfee57ffd3dd2e41360bd78d8c30e8fb9e0219a7e78890fd8aadc7b9242c9" }, "downloads": -1, "filename": "sap_cf_logging-3.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "575555ed261c99a1ebcdd8c81c88f200", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25102, "upload_time": "2018-05-31T11:09:19", "url": "https://files.pythonhosted.org/packages/07/1f/6349e5cc4e20ed7eb55991fa8a68dead48e8aafaf581f4ffe7a7de79d9b2/sap_cf_logging-3.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e1b7564e347663eaffbae6a60b46e8c", "sha256": "5c571ceab0549ec7f0016701da70b0905342e75c601d1c0afb4ec7a204d42edf" }, "downloads": -1, "filename": "sap_cf_logging-3.2.0.tar.gz", "has_sig": false, "md5_digest": "1e1b7564e347663eaffbae6a60b46e8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18688, "upload_time": "2018-05-31T11:09:20", "url": "https://files.pythonhosted.org/packages/23/e7/767bae934423c2f1d91dd0fe468466178fe2379435810779c72b5e13d799/sap_cf_logging-3.2.0.tar.gz" } ], "3.3.0": [ { "comment_text": "", "digests": { "md5": "9c36194870f6ca12197ef8ca1885ba18", "sha256": "dcbadd71cd7c40ead09700dba15a36019665b570416e636991fa214a705e6590" }, "downloads": -1, "filename": "sap_cf_logging-3.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9c36194870f6ca12197ef8ca1885ba18", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30748, "upload_time": "2018-06-07T13:35:31", "url": "https://files.pythonhosted.org/packages/9f/59/6069681ebae9ba3328f9ac06c2d77af4b2412a1ec6dbbc3d1c2b451788cf/sap_cf_logging-3.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2abc2eb441ae94ccd4d24a10c58f176e", "sha256": "c58f46d002fa22ee3d5cda6f8a7f9d919f0a2b448a72acf019d310e94ea5c001" }, "downloads": -1, "filename": "sap_cf_logging-3.3.0.tar.gz", "has_sig": false, "md5_digest": "2abc2eb441ae94ccd4d24a10c58f176e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19881, "upload_time": "2018-06-07T13:35:32", "url": "https://files.pythonhosted.org/packages/51/75/e5da36dbe3f6c4ef98c135bb6194df910cb5746c0b90abd4cda591736451/sap_cf_logging-3.3.0.tar.gz" } ], "3.3.1": [ { "comment_text": "", "digests": { "md5": "20f673f94087df7cfd466b769bb1f774", "sha256": "0a48826a7d7a56453895f1b4feaa01c2c424aaaf4fd90b5fd65340c7c01b4b59" }, "downloads": -1, "filename": "sap_cf_logging-3.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "20f673f94087df7cfd466b769bb1f774", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26703, "upload_time": "2018-06-18T13:36:42", "url": "https://files.pythonhosted.org/packages/ea/4d/48c902a7cd3b3245e9e387f4623877d45aeec712362ffa6f9728a83722a5/sap_cf_logging-3.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48c1f1954de44c76fb07983b9c103dcb", "sha256": "8c9f501a29c23d550931ffc9b3991e8563a76ce892d6eea3cdc44a03d4e004d3" }, "downloads": -1, "filename": "sap_cf_logging-3.3.1.tar.gz", "has_sig": false, "md5_digest": "48c1f1954de44c76fb07983b9c103dcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19790, "upload_time": "2018-06-18T13:36:44", "url": "https://files.pythonhosted.org/packages/78/6b/092c7cd3e106f2712c4230c1658dc99da64cff10e9597c850b478ee2c219/sap_cf_logging-3.3.1.tar.gz" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "5df647bd85f2132711608daabcab6605", "sha256": "4ee7871c165ff27edd0d9c229560aed1539cf706bb14869cb7bde7a84d7e0fa3" }, "downloads": -1, "filename": "sap_cf_logging-4.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5df647bd85f2132711608daabcab6605", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27448, "upload_time": "2018-07-04T08:09:40", "url": "https://files.pythonhosted.org/packages/f3/9d/81ff5f2301c3c46491c9924799c087a26cd51ec65538509a06890cd4941f/sap_cf_logging-4.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e720ce48c9d0b87b57478498c876160c", "sha256": "0813312979d30ba5622e5d438363f77004490535a2b3b1b7a9df0dbf599ea886" }, "downloads": -1, "filename": "sap_cf_logging-4.0.0.tar.gz", "has_sig": false, "md5_digest": "e720ce48c9d0b87b57478498c876160c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20184, "upload_time": "2018-07-04T08:09:41", "url": "https://files.pythonhosted.org/packages/bf/9b/a41b768d1a046f845db8bdcd9831c8aba979876f30841328c32c9178665a/sap_cf_logging-4.0.0.tar.gz" } ], "4.0.1": [ { "comment_text": "", "digests": { "md5": "2f2d8f0545b77bd60677512a716ac873", "sha256": "adfa7202a6f68ee2508fa51659c27917a30de67098bc6399f9bf274d6805a8f4" }, "downloads": -1, "filename": "sap_cf_logging-4.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2f2d8f0545b77bd60677512a716ac873", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27446, "upload_time": "2018-07-10T06:58:00", "url": "https://files.pythonhosted.org/packages/80/0c/fdf16d847a4b68325b4737311ed3fa60eeaaabc888f0c24c7c28c6583f66/sap_cf_logging-4.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5f08cf91496bcb870778d90992891a7", "sha256": "7230c84a5b807adb9422a381f2786b03d755eca15592e8ed8a85dc69e4e85717" }, "downloads": -1, "filename": "sap_cf_logging-4.0.1.tar.gz", "has_sig": false, "md5_digest": "f5f08cf91496bcb870778d90992891a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20236, "upload_time": "2018-07-10T06:58:02", "url": "https://files.pythonhosted.org/packages/68/69/dd85f80fcb418ba9fcabb987e459edaea6984aca2eedfc61d90a0ef4e768/sap_cf_logging-4.0.1.tar.gz" } ], "4.1.0": [ { "comment_text": "", "digests": { "md5": "5090c308baeaef1c5e50b432d2aa38e7", "sha256": "d5838fc1cf75537eed22d6aa9219b17a9411d4deea7355bc1b964ffcd63fa8f0" }, "downloads": -1, "filename": "sap_cf_logging-4.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5090c308baeaef1c5e50b432d2aa38e7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30310, "upload_time": "2018-09-13T13:26:23", "url": "https://files.pythonhosted.org/packages/e1/27/0c85651b436dd8c86ba62c8c7b26e56725284e50aae2ebf32200507123e7/sap_cf_logging-4.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a316a90ff7344bf0d5c194e475dacb0f", "sha256": "740664ce68320cecc4e619b7871106e5bbd2cdf8e3ab09b34e9a89032a9eb497" }, "downloads": -1, "filename": "sap_cf_logging-4.1.0.tar.gz", "has_sig": false, "md5_digest": "a316a90ff7344bf0d5c194e475dacb0f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22023, "upload_time": "2018-09-13T13:26:25", "url": "https://files.pythonhosted.org/packages/48/4b/35da871c22f6e7a8ff9a7d292364e0b8cfb938fec97fece40ad9e8882ad5/sap_cf_logging-4.1.0.tar.gz" } ], "4.1.1": [ { "comment_text": "", "digests": { "md5": "b53726ff16aee4612c4372c4aa1c3581", "sha256": "efd22798847f712cc7b88a2cac3640ae8cba60367b366a618a3e94611403de84" }, "downloads": -1, "filename": "sap_cf_logging-4.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b53726ff16aee4612c4372c4aa1c3581", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30311, "upload_time": "2019-04-20T10:46:53", "url": "https://files.pythonhosted.org/packages/32/55/c9629458a33297c2ca8bcadea04d47e433161802a15036dafad601ab8790/sap_cf_logging-4.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "357fa696ade6f0774c928c00b2ca7e2e", "sha256": "d530f3f71ac253dc8f9072265ba09b870916b99dffa25d54e5828c4546a4108d" }, "downloads": -1, "filename": "sap_cf_logging-4.1.1.tar.gz", "has_sig": false, "md5_digest": "357fa696ade6f0774c928c00b2ca7e2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22065, "upload_time": "2019-04-20T10:46:54", "url": "https://files.pythonhosted.org/packages/a6/6e/7d176154e658de7ceecf2e430a52d829e891269c8e6e641c959e094e396c/sap_cf_logging-4.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b53726ff16aee4612c4372c4aa1c3581", "sha256": "efd22798847f712cc7b88a2cac3640ae8cba60367b366a618a3e94611403de84" }, "downloads": -1, "filename": "sap_cf_logging-4.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b53726ff16aee4612c4372c4aa1c3581", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30311, "upload_time": "2019-04-20T10:46:53", "url": "https://files.pythonhosted.org/packages/32/55/c9629458a33297c2ca8bcadea04d47e433161802a15036dafad601ab8790/sap_cf_logging-4.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "357fa696ade6f0774c928c00b2ca7e2e", "sha256": "d530f3f71ac253dc8f9072265ba09b870916b99dffa25d54e5828c4546a4108d" }, "downloads": -1, "filename": "sap_cf_logging-4.1.1.tar.gz", "has_sig": false, "md5_digest": "357fa696ade6f0774c928c00b2ca7e2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22065, "upload_time": "2019-04-20T10:46:54", "url": "https://files.pythonhosted.org/packages/a6/6e/7d176154e658de7ceecf2e430a52d829e891269c8e6e641c959e094e396c/sap_cf_logging-4.1.1.tar.gz" } ] }