{"id":15019689,"url":"https://github.com/gergelypolonkai/flask-logging-extras","last_synced_at":"2026-01-20T04:32:23.257Z","repository":{"id":57430459,"uuid":"79032842","full_name":"gergelypolonkai/flask-logging-extras","owner":"gergelypolonkai","description":"Extra logging functionality for Flask applications","archived":false,"fork":false,"pushed_at":"2018-11-07T08:07:41.000Z","size":27,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-25T12:54:47.104Z","etag":null,"topics":["flask"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gergelypolonkai.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-15T12:58:55.000Z","updated_at":"2018-11-07T08:07:43.000Z","dependencies_parsed_at":"2022-08-26T02:42:35.467Z","dependency_job_id":null,"html_url":"https://github.com/gergelypolonkai/flask-logging-extras","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gergelypolonkai/flask-logging-extras","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gergelypolonkai%2Fflask-logging-extras","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gergelypolonkai%2Fflask-logging-extras/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gergelypolonkai%2Fflask-logging-extras/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gergelypolonkai%2Fflask-logging-extras/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gergelypolonkai","download_url":"https://codeload.github.com/gergelypolonkai/flask-logging-extras/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gergelypolonkai%2Fflask-logging-extras/sbom","scorecard":{"id":423694,"data":{"date":"2025-08-11","repo":{"name":"github.com/gergelypolonkai/flask-logging-extras","commit":"0da9bcef66efd2f8a09d9adc6f27014b6390a6bf"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/20 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T01:49:19.663Z","repository_id":57430459,"created_at":"2025-08-19T01:49:19.663Z","updated_at":"2025-08-19T01:49:19.663Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28596079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T02:08:49.799Z","status":"ssl_error","status_checked_at":"2026-01-20T02:08:44.148Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask"],"created_at":"2024-09-24T19:53:53.600Z","updated_at":"2026-01-20T04:32:23.240Z","avatar_url":"https://github.com/gergelypolonkai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Flask-Logging-Extras\n====================\n\n.. image:: https://travis-ci.org/gergelypolonkai/flask-logging-extras.svg?branch=master\n    :target: https://travis-ci.org/gergelypolonkai/flask-logging-extras\n\n.. image:: https://codecov.io/gh/gergelypolonkai/flask-logging-extras/branch/master/graph/badge.svg\n   :target: https://codecov.io/gh/gergelypolonkai/flask-logging-extras\n\n.. image:: https://badge.fury.io/py/Flask-Logging-Extras.svg\n    :target: https://badge.fury.io/py/Flask-Logging-Extras\n\n.. image:: https://readthedocs.org/projects/flask-logging-extras/badge/?version=latest\n    :target: http://flask-logging-extras.readthedocs.io/en/latest/?badge=latest\n\nFlask-Logging-Extras adds additional logging features for Flask applications.\n\nExtra keywords in the log formatters\n------------------------------------\n\nAdding extra keywords to the log format message is a bit tedious, as these\nmust be supplied to the logging methods in the `extra` argument as a\ndictionary.\n\nFlask-Logging-Extras makes this easier, so you can add such keywords to the\nlogging methods directly. The example adds the category keyword to the logs,\nand shows how to do it with and without Flask-Logging-Extras:\n\n.. code-block:: python\n\n   fmt = '[%(asctime)s] [%(levelname)s] [%(category)s] %(message'\n   # Initialize log handlers as usual, like creating a FileHandler, and\n   # assign fmt to it as a format string\n   app.config['FLASK_LOGGING_EXTRAS_KEYWORDS'] = {'category': '\u003cunset\u003e'}\n   app.logger.init_app(app)\n\n   # Without Flask-Logging-Extras\n   current_app.logger.info('this is a the message, as usual',\n                           extra={'category': 'fancy-category'})\n   # With Flask-Logging-Extras\n   current_app.logger.info('this is the message, as usual',\n                           category='fancy-category')\n\nLogging the blueprint name\n--------------------------\n\nAlthough you can always access the blueprint name using `request.blueprint`,\nadding it to the logs as a new keyword is not so easy.\n\nWith Flask-Logging-Extras you can specify a keyword that will hold the\nblueprint name in the logs, and specify what value to put there if the log\ndoesn’t originate in a request, or it is not from a blueprint route, but\nfrom an app route.\n\n.. code-block:: python\n\n   fmt = '[%(blueprint)s] %(message)s'\n   # Initialize log handlers as usual, like creating a FileHandler, and\n   # assign fmt to it as a format string\n   app.config['FLASK_LOGGING_EXTRAS_BLUEPRINT'] = (\n       'blueprint',\n       '\u003cAPP\u003e',\n       '\u003cNO REQUEST\u003e',\n   )\n\n   bp = Blueprint('bpname', __name__)\n   app.register_blueprint(bp)\n\n   @app.route('/route/1/')\n   def route_1():\n       # This will produce the log message: \"[\u003cAPP\u003e] Message\"\n       current_app.logger.info('Message')\n\n       return 'response 1'\n\n   @bp.route('/route/2/')\n   def route_2():\n       # This will produce the log message: \"[bpname] Message\"\n       current_app.logger.info('Message')\n\n       return 'response 2'\n\n   def random_function_outside_of_a_request():\n       # This will produce the log message: \"[\u003cNO REQUEST\u003e] Message\"\n       current_app.logger.info('Message')\n\nInstallation\n------------\n\nThe easiest way to start using the package is with pip:\n\n.. code-block:: sh\n\n   $ pip install Flask-Logging-Extras\n\nIf you prefer to install from source, you can clone this repo and run\n\n.. code-block:: sh\n\n   $ python setup.py install\n\nUsage\n-----\n\n`View the documentation online\n\u003chttp://flask-logging-extras.readthedocs.io/\u003e`_\n\nTesting and Code Coverage\n-------------------------\n\nWe require 100% code coverage in our unit tests. We run all the unit tests\nwith tox, which will test against python2.7, 3.3, 3.4, and 3.5.\n\nRunning tox will print out a code coverage report.  Coverage report is also\navailable on codecov.\n\ntox is running automatically for every push in Travis-CI.  To run tox on\nyour local machine, you can simply invoke it with the `tox` command.\n\nGenerating Documentation\n------------------------\n\nYou can generate a local copy of the documentation.  First, make sure you\nhave the flask sphinx theme available.  You can get it (and all possible\ndocumentation requirements) with\n\n.. code-block:: sh\n\n   $ pip install -r docs-requirements.txt\n\nThen in the `docs/` directory, run\n\n.. code-block:: sh\n\n   $ make clean \u0026\u0026 make html\n\nLicense\n-------\n\nThis module is available under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgergelypolonkai%2Fflask-logging-extras","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgergelypolonkai%2Fflask-logging-extras","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgergelypolonkai%2Fflask-logging-extras/lists"}