summaryrefslogtreecommitdiffstats
path: root/pyload/lib/colorlog/colorlog.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/lib/colorlog/colorlog.py')
-rw-r--r--pyload/lib/colorlog/colorlog.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/pyload/lib/colorlog/colorlog.py b/pyload/lib/colorlog/colorlog.py
new file mode 100644
index 000000000..5491676b8
--- /dev/null
+++ b/pyload/lib/colorlog/colorlog.py
@@ -0,0 +1,76 @@
+"""The ColoredFormatter class"""
+
+from __future__ import absolute_import
+
+import sys
+import logging
+
+from colorlog.escape_codes import escape_codes
+
+__all__ = ['escape_codes', 'default_log_colors', 'ColoredFormatter']
+
+# The default colors to use for the debug levels
+default_log_colors = {
+ 'DEBUG': 'white',
+ 'INFO': 'green',
+ 'WARNING': 'yellow',
+ 'ERROR': 'red',
+ 'CRITICAL': 'bold_red',
+}
+
+
+class ColoredFormatter(logging.Formatter):
+ """A formatter that allows colors to be placed in the format string.
+
+ Intended to help in creating more readable logging output."""
+
+ def __init__(self, format, datefmt=None,
+ log_colors=default_log_colors, reset=True, style='%'):
+ """
+ :Parameters:
+ - format (str): The format string to use
+ - datefmt (str): A format string for the date
+ - log_colors (dict):
+ A mapping of log level names to color names
+ - reset (bool):
+ Implictly append a color reset to all records unless False
+ - style ('%' or '{' or '$'):
+ The format style to use. No meaning prior to Python 3.2.
+
+ The ``format``, ``datefmt`` and ``style`` args are passed on to the
+ Formatter constructor.
+ """
+ if sys.version_info > (3, 2):
+ super(ColoredFormatter, self).__init__(
+ format, datefmt, style=style)
+ elif sys.version_info > (2, 7):
+ super(ColoredFormatter, self).__init__(format, datefmt)
+ else:
+ logging.Formatter.__init__(self, format, datefmt)
+ self.log_colors = log_colors
+ self.reset = reset
+
+ def format(self, record):
+ # Add the color codes to the record
+ record.__dict__.update(escape_codes)
+
+ # If we recognise the level name,
+ # add the levels color as `log_color`
+ if record.levelname in self.log_colors:
+ color = self.log_colors[record.levelname]
+ record.log_color = escape_codes[color]
+ else:
+ record.log_color = ""
+
+ # Format the message
+ if sys.version_info > (2, 7):
+ message = super(ColoredFormatter, self).format(record)
+ else:
+ message = logging.Formatter.format(self, record)
+
+ # Add a reset code to the end of the message
+ # (if it wasn't explicitly added in format str)
+ if self.reset and not message.endswith(escape_codes['reset']):
+ message += escape_codes['reset']
+
+ return message