{"id":30579499,"url":"https://github.com/dakrauth/prolog","last_synced_at":"2025-08-29T04:11:34.408Z","repository":{"id":57455068,"uuid":"102785220","full_name":"dakrauth/prolog","owner":"dakrauth","description":"📋 Simple yet robust logging features for Python","archived":false,"fork":false,"pushed_at":"2024-11-15T00:19:35.000Z","size":122,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-03T10:06:56.766Z","etag":null,"topics":["logging","python3"],"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/dakrauth.png","metadata":{"files":{"readme":"README.html","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-09-07T21:00:48.000Z","updated_at":"2024-11-15T00:19:17.000Z","dependencies_parsed_at":"2022-09-10T08:22:29.869Z","dependency_job_id":null,"html_url":"https://github.com/dakrauth/prolog","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/dakrauth/prolog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dakrauth%2Fprolog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dakrauth%2Fprolog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dakrauth%2Fprolog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dakrauth%2Fprolog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dakrauth","download_url":"https://codeload.github.com/dakrauth/prolog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dakrauth%2Fprolog/sbom","scorecard":{"id":317493,"data":{"date":"2025-08-11","repo":{"name":"github.com/dakrauth/prolog","commit":"e5733e2bd325a07a95f6289413b64f6ec53bc1a7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/25 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":"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":"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":"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"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":"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":"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":"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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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"}}]},"last_synced_at":"2025-08-18T00:33:57.439Z","repository_id":57455068,"created_at":"2025-08-18T00:33:57.439Z","updated_at":"2025-08-18T00:33:57.439Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272625092,"owners_count":24966288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-29T02:00:10.610Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["logging","python3"],"created_at":"2025-08-29T04:11:33.819Z","updated_at":"2025-08-29T04:11:34.400Z","avatar_url":"https://github.com/dakrauth.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\n\u003chtml xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\"\u003e\n\u003chead\u003e\n\u003cmeta charset=\"utf-8\"/\u003e\n\u003cmeta name=\"generator\" content=\"Docutils 0.14: http://docutils.sourceforge.net/\" /\u003e\n\u003ctitle\u003eprolog\u003c/title\u003e\n\u003cstyle type=\"text/css\"\u003e\n\n/* Minimal style sheet for the HTML output of Docutils.                    */\n/*                                                                         */\n/* :Author: Günter Milde, based on html4css1.css by David Goodger          */\n/* :Id: $Id: minimal.css 8036 2017-02-14 13:05:46Z milde $               */\n/* :Copyright: © 2015 Günter Milde.                                        */\n/* :License: Released under the terms of the `2-Clause BSD license`_,      */\n/*    in short:                                                            */\n/*                                                                         */\n/*    Copying and distribution of this file, with or without modification, */\n/*    are permitted in any medium without royalty provided the copyright   */\n/*    notice and this notice are preserved.                                */\n/*                                                                         */\n/*    This file is offered as-is, without any warranty.                    */\n/*                                                                         */\n/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause     */\n\n/* This CSS2.1_ stylesheet defines rules for Docutils elements without    */\n/* HTML equivalent. It is required to make the document semantic visible. */\n/*                                                                        */\n/* .. _CSS2.1: http://www.w3.org/TR/CSS2                                  */\n/* .. _validates: http://jigsaw.w3.org/css-validator/validator$link       */\n\n/* alignment of text and inline objects inside block objects*/\n.align-left   { text-align: left; }\n.align-right  { text-align: right; }\n.align-center { clear: both; text-align: center; }\n.align-top    { vertical-align: top; }\n.align-middle { vertical-align: middle; }\n.align-bottom { vertical-align: bottom; }\n\n/* titles */\nh1.title, p.subtitle {\n  text-align: center;\n}\np.admonition-title,\np.topic-title,\np.sidebar-title,\np.rubric,\np.system-message-title {\n  font-weight: bold;\n}\nh1 + p.subtitle,\nh1 + p.section-subtitle {\n  font-size: 1.6em;\n}\nh2 + p.section-subtitle { font-size: 1.28em; }\np.subtitle,\np.section-subtitle,\np.sidebar-subtitle {\n  font-weight: bold;\n  margin-top: -0.5em;\n}\np.sidebar-title,\np.rubric {\n  font-size: larger;\n}\np.rubric { color: maroon; }\na.toc-backref {\n  color: black;\n  text-decoration: none; }\n\n/* Warnings, Errors */\ndiv.caution p.admonition-title,\ndiv.attention p.admonition-title,\ndiv.danger p.admonition-title,\ndiv.error p.admonition-title,\ndiv.warning p.admonition-title,\ndiv.system-messages h1,\ndiv.error,\nspan.problematic,\np.system-message-title {\n  color: red;\n}\n\n/* inline literals */\nspan.docutils.literal {\n  font-family: monospace;\n  white-space: pre-wrap;\n}\n/* do not wraph at hyphens and similar: */\n.literal \u003e span.pre { white-space: nowrap; }\n\n/* Lists */\n\n/* compact and simple lists: no margin between items */\n.simple  li, .compact li,\n.simple  ul, .compact ul,\n.simple  ol, .compact ol,\n.simple \u003e li p, .compact \u003e li p,\ndl.simple \u003e dd, dl.compact \u003e dd {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n/* Table of Contents */\ndiv.topic.contents { margin: 0; }\nul.auto-toc {\n  list-style-type: none;\n  padding-left: 1.5em; }\n\n/* Enumerated Lists */\nol.arabic     { list-style: decimal }\nol.loweralpha { list-style: lower-alpha }\nol.upperalpha { list-style: upper-alpha }\nol.lowerroman { list-style: lower-roman }\nol.upperroman { list-style: upper-roman }\n\ndt span.classifier { font-style: italic }\ndt span.classifier:before {\n  font-style: normal;\n  margin: 0.5em;\n  content: \":\";\n}\n\n/* Field Lists and drivatives */\n/* bold field name, content starts on the same line */\ndl.field-list \u003e dt,\ndl.option-list \u003e dt,\ndl.docinfo \u003e dt,\ndl.footnote \u003e dt,\ndl.citation \u003e dt {\n  font-weight: bold;\n  clear: left;\n  float: left;\n  margin: 0;\n  padding: 0;\n  padding-right: 0.5em;\n}\n/* Offset for field content (corresponds to the --field-name-limit option) */\ndl.field-list \u003e dd,\ndl.option-list \u003e dd,\ndl.docinfo \u003e dd {\n  margin-left:  9em; /* ca. 14 chars in the test examples */\n}\n/* start field-body on a new line after long field names */\ndl.field-list \u003e dd \u003e *:first-child,\ndl.option-list \u003e dd \u003e *:first-child\n{\n  display: inline-block;\n  width: 100%;\n  margin: 0;\n}\n/* field names followed by a colon */\ndl.field-list \u003e dt:after,\ndl.docinfo \u003e dt:after {\n  content: \":\";\n}\n\n/* Bibliographic Fields (docinfo) */\npre.address { font: inherit; }\ndd.authors \u003e p { margin: 0; }\n\n/* Option Lists */\ndl.option-list { margin-left: 40px; }\ndl.option-list \u003e dt { font-weight: normal; }\nspan.option { white-space: nowrap; }\n\n/* Footnotes and Citations  */\ndl.footnote.superscript \u003e dd {margin-left: 1em; }\ndl.footnote.brackets \u003e dd {margin-left: 2em; }\ndl \u003e dt.label { font-weight: normal; }\na.footnote-reference.brackets:before,\ndt.label \u003e span.brackets:before { content: \"[\"; }\na.footnote-reference.brackets:after,\ndt.label \u003e span.brackets:after { content: \"]\"; }\na.footnote-reference.superscript,\ndl.footnote.superscript \u003e dt.label {\n  vertical-align: super;\n  font-size: smaller;\n}\ndt.label \u003e span.fn-backref { margin-left: 0.2em; }\ndt.label \u003e span.fn-backref \u003e a { font-style: italic; }\n\n/* Line Blocks */\ndiv.line-block { display: block; }\ndiv.line-block div.line-block {\n  margin-top: 0;\n  margin-bottom: 0;\n  margin-left: 40px;\n}\n\n/* Figures, Images, and Tables */\n.figure.align-left,\nimg.align-left,\nobject.align-left,\ntable.align-left {\n  margin-right: auto;\n}\n.figure.align-center,\nimg.align-center,\nobject.align-center {\n  margin-left: auto;\n  margin-right: auto;\n  display: block;\n}\ntable.align-center {\n  margin-left: auto;\n  margin-right: auto;\n}\n.figure.align-right,\nimg.align-right,\nobject.align-right,\ntable.align-right {\n  margin-left: auto;\n}\n/* reset inner alignment in figures and tables */\n/* div.align-left, div.align-center, div.align-right, */\ntable.align-left, table.align-center, table.align-right\n{ text-align: inherit }\n\n/* Admonitions and System Messages */\ndiv.admonition,\ndiv.system-message,\ndiv.sidebar{\n  margin: 40px;\n  border: medium outset;\n  padding-right: 1em;\n  padding-left: 1em;\n}\n\n/* Sidebar */\ndiv.sidebar {\n  width: 30%;\n  max-width: 26em;\n  float: right;\n  clear: right;\n}\n\n/* Text Blocks */\ndiv.topic,\npre.literal-block,\npre.doctest-block,\npre.math,\npre.code {\n  margin-right: 40px;\n  margin-left: 40px;\n}\npre.code .ln { color: gray; } /* line numbers */\n\n/* Tables */\ntable { border-collapse: collapse; }\ntd, th {\n  border-style: solid;\n  border-color: silver;\n  padding: 0 1ex;\n  border-width: thin;\n}\ntd \u003e p:first-child, th \u003e p:first-child { margin-top: 0; }\ntd \u003e p, th \u003e p { margin-bottom: 0; }\n\ntable \u003e caption {\n  text-align: left;\n  margin-bottom: 0.25em\n}\n\ntable.borderless td, table.borderless th {\n  border: 0;\n  padding: 0;\n  padding-right: 0.5em /* separate table cells */\n}\n\n\u003c/style\u003e\n\u003cstyle type=\"text/css\"\u003e\n\n/* CSS31_ style sheet for the output of Docutils HTML writers.             */\n/* Rules for easy reading and pre-defined style variants.\t\t   */\n/*                                                                         */\n/* :Author: Günter Milde, based on html4css1.css by David Goodger          */\n/* :Id: $Id: plain.css 8120 2017-06-22 21:02:40Z milde $               */\n/* :Copyright: © 2015 Günter Milde.                                        */\n/* :License: Released under the terms of the `2-Clause BSD license`_,      */\n/*    in short:                                                            */\n/*                                                                         */\n/*    Copying and distribution of this file, with or without modification, */\n/*    are permitted in any medium without royalty provided the copyright   */\n/*    notice and this notice are preserved.                                */\n/*    \t     \t      \t     \t \t\t\t\t\t   */\n/*    This file is offered as-is, without any warranty.                    */\n/*                                                                         */\n/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause     */\n/* .. _CSS3: http://www.w3.org/TR/CSS3\t\t        \t\t   */\n\n\n/* Document Structure */\n/* ****************** */\n\n/* \"page layout\" */\nbody {\n  padding: 0 5%;\n  margin: 8px 0;\n}\ndiv.document {\n  line-height:1.3;\n  counter-reset: table;\n  /* counter-reset: figure; */\n  /* avoid long lines --\u003e better reading */\n  /* OTOH: lines should not be too short because of missing hyphenation, */\n  max-width: 50em;\n  margin: auto;\n}\n\n/* Sections */\n\n/* Transitions */\n\nhr.docutils {\n  width: 80%;\n  margin-top: 1em;\n  margin-bottom: 1em;\n  clear: both;\n}\n\n/* Paragraphs               */\n/* ==========               */\n\n/* vertical space (parskip) */\np, ol, ul, dl,\ndiv.line-block,\ntable{\n  margin-top: 0.5em;\n  margin-bottom: 0.5em;\n}\nh1, h2, h3, h4, h5, h6,\ndl \u003e dd {\n  margin-bottom: 0.5em;\n}\n\n/* Lists                    */\n/* ==========               */\n\n/* Definition Lists         */\n\ndl \u003e dd \u003e p:first-child { margin-top: 0; }\n/* :last-child is not part of CSS 2.1 (introduced in CSS 3) */\ndl \u003e dd \u003e p:last-child  { margin-bottom: 0; }\n\n/* lists nested in definition lists */\n/* :only-child is not part of CSS 2.1 (introduced in CSS 3) */\ndd \u003e ul:only-child, dd \u003e ol:only-child { padding-left: 1em; }\n\n/* Description Lists */\n/* styled like in most dictionaries, encyclopedias etc. */\ndl.description \u003e dt {\n  font-weight: bold;\n  clear: left;\n  float: left;\n  margin: 0;\n  padding: 0;\n  padding-right: 0.5em;\n}\n\n/* Field Lists */\n\n/* example for custom field-name width */\ndl.field-list.narrow \u003e dd {\n  margin-left: 5em;\n}\n/* run-in: start field-body on same line after long field names */\ndl.field-list.run-in \u003e dd p {\n  display: block;\n}\n\n/* Bibliographic Fields */\n\n/* generally, bibliographic fields use special definition list dl.docinfo */\n/* but dedication and abstract are placed into \"topic\" divs */\ndiv.abstract p.topic-title {\n  text-align: center;\n}\ndiv.dedication {\n  margin: 2em 5em;\n  text-align: center;\n  font-style: italic;\n}\ndiv.dedication p.topic-title {\n  font-style: normal;\n}\n\n/* Citations */\ndl.citation dt.label {\n  font-weight: bold;\n}\nspan.fn-backref {\n  font-weight: normal;\n}\n\n/* Text Blocks           */\n/* ============          */\n\n/* Literal Blocks           */\npre.literal-block, pre.doctest-block,\npre.math, pre.code {\n  margin-left: 1.5em;\n  margin-right: 1.5em\n}\n\n/* Block Quotes             */\n\nblockquote,\ndiv.topic {\n  margin-left: 1.5em;\n  margin-right: 1.5em\n}\nblockquote \u003e table,\ndiv.topic \u003e table {\n  margin-top: 0;\n  margin-bottom: 0;\n}\nblockquote p.attribution,\ndiv.topic p.attribution {\n  text-align: right;\n  margin-left: 20%;\n}\n\n/* Tables                   */\n/* ======                   */\n\n/* th { vertical-align: bottom; } */\n\ntable tr { text-align: left; }\n\n/* \"booktabs\" style (no vertical lines) */\ntable.booktabs {\n  border: 0;\n  border-top: 2px solid;\n  border-bottom: 2px solid;\n  border-collapse: collapse;\n}\ntable.booktabs * {\n  border: 0;\n}\ntable.booktabs th {\n  border-bottom: thin solid;\n}\n\n/* numbered tables (counter defined in div.document) */\ntable.numbered \u003e caption:before {\n  counter-increment: table;\n  content: \"Table \" counter(table) \": \";\n  font-weight: bold;\n}\n\n/* Explicit Markup Blocks   */\n/* ======================   */\n\n/* Footnotes and Citations  */\n/* -----------------------  */\n\n/* line on the left */\ndl.footnote {\n  padding-left: 1ex;\n  border-left: solid;\n  border-left-width: thin;\n}\n\n/* Directives               */\n/* ----------               */\n\n/* Body Elements            */\n/* ~~~~~~~~~~~~~            */\n\n/* Images and Figures */\n\n/* let content flow to the side of aligned images and figures */\n.figure.align-left,\nimg.align-left,\nobject.align-left {\n  display: block;\n  clear: left;\n  float: left;\n  margin-right: 1em\n}\n.figure.align-right,\nimg.align-right,\nobject.align-right {\n  display: block;\n  clear: right;\n  float: right;\n  margin-left: 1em\n}\n/* Stop floating sidebars, images and figures at section level 1,2,3 */\nh1, h2, h3 { clear: both; }\n\n/* Sidebar */\n\n/* Move into the margin. In a layout with fixed margins, */\n/* it can be moved into the margin completely.\t\t */\ndiv.sidebar {\n  width: 30%;\n  max-width: 26em;\n  margin-left: 1em;\n  margin-right: -5.5%;\n  background-color: #ffffee ;\n}\n\n/* Code                     */\n\npre.code, code { background-color: #eeeeee }\npre.code .ln { color: gray; } /* line numbers */\n/* basic highlighting: for a complete scheme, see */\n/* http://docutils.sourceforge.net/sandbox/stylesheets/ */\npre.code .comment, code .comment { color: #5C6576 }\npre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }\npre.code .literal.string, code .literal.string { color: #0C5404 }\npre.code .name.builtin, code .name.builtin { color: #352B84 }\npre.code .deleted, code .deleted { background-color: #DEB0A1}\npre.code .inserted, code .inserted { background-color: #A3D289}\n\n/* Math                     */\n/* styled separately (see math.css for math-output=HTML) */\n\n/* Epigraph                 */\n/* Highlights               */\n/* Pull-Quote               */\n/* Compound Paragraph       */\n/* Container                */\n\n/* can be styled in a custom stylesheet */\n\n/* Document Header and Footer */\n\ndiv.footer, div.header {\n  clear: both;\n  font-size: smaller;\n}\n\n/* Inline Markup            */\n/* =============            */\n\n/* Emphasis                 */\n/*   em                     */\n/* Strong Emphasis          */\n/*   strong\t\t    */\n/* Interpreted Text         */\n/*   span.interpreted  \t    */\n/* Title Reference \t    */\n/*   cite\t\t    */\n/* Inline Literals          */\n/* possible values: normal, nowrap, pre, pre-wrap, pre-line */\n/*   span.docutils.literal { white-space: pre-wrap; } */\n\n/* Hyperlink References     */\na { text-decoration: none; }\n\n/* External Targets         */\n/*   span.target.external   */\n/* Internal Targets  \t    */\n/*   span.target.internal   */\n/* Footnote References      */\n/*   a.footnote-reference   */\n/* Citation References      */\n/*   a.citation-reference   */\n\n\u003c/style\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003cdiv class=\"document\" id=\"prolog\"\u003e\n\u003ch1 class=\"title\"\u003eprolog\u003c/h1\u003e\n\n\u003cp\u003eTools and convenience methods to simplify and expedite Python logging.\u003c/p\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003e\u003cp\u003eSimple - though opinionated - setup for common use-cases\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eExtensively and easily configurable via user and local files, as well as environ variables\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eComes with full featured formatters and handlers that can also be used\nin normal \u003cspan class=\"docutils literal\"\u003elogging\u003c/span\u003e situations\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"section\" id=\"usage\"\u003e\n\u003ch1\u003eUsage\u003c/h1\u003e\n\u003cdiv class=\"section\" id=\"basic-config\"\u003e\n\u003ch2\u003e\u003cspan class=\"docutils literal\"\u003ebasic_config\u003c/span\u003e\u003c/h2\u003e\n\u003cp\u003eThe easiest way to begin using \u003cspan class=\"docutils literal\"\u003eprolog\u003c/span\u003e is to add the following to your\napplication code:\u003c/p\u003e\n\u003cpre class=\"literal-block\"\u003eimport prolog\nprolog.basic_config()\u003c/pre\u003e\n\u003cp\u003eThis will configure the \u003cspan class=\"docutils literal\"\u003eroot\u003c/span\u003e logger for the default level \u003cspan class=\"docutils literal\"\u003elogging.INFO\u003c/span\u003e\nand set up two handlers: a colorized, console streaming handler, as well as a file\nhandler set to log to the default file - \u003cspan class=\"docutils literal\"\u003epypro.log\u003c/span\u003e - in the main app's directory.\u003c/p\u003e\n\u003cp\u003eTo specify select loggers defined in application or library code, you pass the\ncomma-seperated names of the desired loggers:\u003c/p\u003e\n\u003cpre class=\"literal-block\"\u003eprolog.basic_config('myapp,another_app')\u003c/pre\u003e\n\u003cp\u003e\u003cspan class=\"docutils literal\"\u003ebasic_config\u003c/span\u003e accepts the following parameters:\u003c/p\u003e\n\u003cdl class=\"simple\"\u003e\n\u003cdt\u003e\u003cspan class=\"docutils literal\"\u003eloggers\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eThe desired loggers to configure; can be either a comma-separated\nstring of logger names, a list of \u003cspan class=\"docutils literal\"\u003eLogger\u003c/span\u003e instances, or \u003cspan class=\"docutils literal\"\u003eNone\u003c/span\u003e\nfor the root logger.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan class=\"docutils literal\"\u003elevel\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eSpecify the logging level for all loggers and handlers. Can be\neither the numeric value or string name for the desired level.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan class=\"docutils literal\"\u003ehandlers\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eThe handlers to add to the given \u003cspan class=\"docutils literal\"\u003eloggers\u003c/span\u003e; can be a comma-separated\nstring of shortcut names ('stream' or 'file', by default) or a list\nof \u003cspan class=\"docutils literal\"\u003eHandler\u003c/span\u003e instances.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan class=\"docutils literal\"\u003epropagate\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eIndicates whether each \u003cspan class=\"docutils literal\"\u003elogger\u003c/span\u003e instance will be set to propagte.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan class=\"docutils literal\"\u003ereset_handlers\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eIf True, force a reset of all currently configured handlers.\u003c/p\u003e\n\u003c/dd\u003e\n\u003cdt\u003e\u003cspan class=\"docutils literal\"\u003ecfg\u003c/span\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eThe \u003cspan class=\"docutils literal\"\u003eprolog.config.PrologConfig\u003c/span\u003e instance to use. If not given,\nthe default will be used (\u003cspan class=\"docutils literal\"\u003eprolog.config.config\u003c/span\u003e). For all\npreceding parameters except for \u003cspan class=\"docutils literal\"\u003eloggers\u003c/span\u003e set to None (the default),\n\u003cspan class=\"docutils literal\"\u003ecfg\u003c/span\u003e will be used to determine the appropriate setting.\u003c/p\u003e\n\u003c/dd\u003e\n\u003c/dl\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"examples\"\u003e\n\u003ch2\u003eExamples\u003c/h2\u003e\n\u003cp\u003eOnce installed, \u003cstrong\u003eprolog\u003c/strong\u003e can be invoked to show configuration settings or\nsample usage:\u003c/p\u003e\n\u003cpre class=\"literal-block\"\u003e$ python -m prolog sample --level=DEBUG basic\u003c/pre\u003e\n\u003cimg alt=\"https://raw.githubusercontent.com/dakrauth/prolog/master/resources/basic-output.png\" src=\"https://raw.githubusercontent.com/dakrauth/prolog/master/resources/basic-output.png\" /\u003e\n\u003cp\u003eSetting colors via environments variables:\u003c/p\u003e\n\u003cpre class=\"literal-block\"\u003e$ export PYPROLOG_LEVEL_COLORS='CRITICAL:white,red;ERROR:lightred;DEBUG:lightgray,cyan;*:gray,gray'\n$ python -m prolog sample --level=DEBUG basic\u003c/pre\u003e\n\u003cimg alt=\"https://raw.githubusercontent.com/dakrauth/prolog/master/resources/env-color-output.png\" src=\"https://raw.githubusercontent.com/dakrauth/prolog/master/resources/env-color-output.png\" /\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"develop-and-testing\"\u003e\n\u003ch1\u003eDevelop and testing\u003c/h1\u003e\n\u003cpre class=\"literal-block\"\u003e$ pip install invoke\n$ inv develop\n$ inv test\u003c/pre\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"configuration\"\u003e\n\u003ch1\u003eConfiguration\u003c/h1\u003e\n\u003cp\u003eProlog can be configured via a number of different options:\u003c/p\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003e\u003cp\u003eUser-level configuration file, using \u003cspan class=\"docutils literal\"\u003eappdirs\u003c/span\u003e to determine the user's\nconfiguration directory plus \u003cspan class=\"docutils literal\"\u003epyprolog/config\u003c/span\u003e, which must be a JSON encoded\nfile containing a dictionary overriding any of the defaults listed below\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eCurrent working directory configuration file \u003cspan class=\"docutils literal\"\u003e.pyprologrc\u003c/span\u003e, also JSON\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eEnvironment variables, see below\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eManipulation of the default \u003cspan class=\"docutils literal\"\u003eprolog.config.config\u003c/span\u003e instance or instantiating\nyour own\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eGenerating a \u003cspan class=\"docutils literal\"\u003elogging.config.dictConfig\u003c/span\u003e dict via \u003cspan class=\"docutils literal\"\u003eprolog.config.dict_config\u003c/span\u003e\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"section\" id=\"defaults\"\u003e\n\u003ch2\u003eDefaults\u003c/h2\u003e\n\u003cpre class=\"literal-block\"\u003eLEVEL = 'INFO'\nSHORT_FMT = \u0026quot;{levelname}:{name} {message}\u0026quot;\nLONG_FMT = '[{asctime} {name}:{levelname}:{module}:{lineno}] {message}'\n\nCOLOR_LONG_FMT = '{color}[{asctime} {name}:{levelname}:{module}:{lineno}]{endcolor} {message}'\nCOLOR_SHORT_FMT = '{color}{levelname}:{name}{endcolor} {message}'\nLEVEL_COLORS = 'DEBUG:magenta;INFO:blue;WARNING:yellow;ERROR:red;CRITICAL:white,red'\n\nDATE_FMT = \u0026quot;%Y-%m-%dT%H:%M:%S\u0026quot;\nSTYLE_FMT = '{'\n\nHANDLERS = 'stream,file'\nPROPAGATE = False\nDISABLE_EXISTING = True\nRESET_HANDLERS = True\n\nSTREAM_LEVEL = 'NOTSET'\nSTREAM_FORMATTER = 'color'\nSTREAM_STREAM = 'sys.stderr'\n\nFILE_LEVEL = 'NOTSET'\nFILE_FORMATTER = 'long'\nFILE_FILENAME = 'pypro.log'\nFILE_MAX_BYTES = 0\nFILE_BACKUP_COUNT = 0\u003c/pre\u003e\n\u003c/div\u003e\n\u003cdiv class=\"section\" id=\"environment\"\u003e\n\u003ch2\u003eEnvironment\u003c/h2\u003e\n\u003cp\u003eBy default, the \u003cspan class=\"docutils literal\"\u003eprolog.config.config\u003c/span\u003e instance will load any environment\nvariable begging with \u003cspan class=\"docutils literal\"\u003ePYPROLOG_\u003c/span\u003e and ending with any of the defaults listed\nabove. For instance, to override the default logging level, do the following\nbefore executing your application code:\u003c/p\u003e\n\u003cpre class=\"literal-block\"\u003e$ export PYPROLOG_LEVEL='DEBUG'\n$ python myapp.py\u003c/pre\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdakrauth%2Fprolog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdakrauth%2Fprolog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdakrauth%2Fprolog/lists"}