diff rhodecode/lib/colored_formatter.py @ 547:1e757ac98988

renamed project to rhodecode
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 06 Oct 2010 03:18:16 +0200
parents pylons_app/lib/colored_formatter.py@779dabcaae28
children b9ea10d3e419 73434499fa72
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/lib/colored_formatter.py	Wed Oct 06 03:18:16 2010 +0200
@@ -0,0 +1,38 @@
+
+import logging
+
+BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = xrange(30, 38)
+
+# Sequences 
+RESET_SEQ = "\033[0m"
+COLOR_SEQ = "\033[1;%dm"
+BOLD_SEQ = "\033[1m"
+
+COLORS = {
+    'CRITICAL': MAGENTA, # level 50
+    'ERROR': RED, # level 40
+    'WARNING': CYAN, # level 30
+    'INFO': GREEN, # level 20
+    'DEBUG': BLUE, # level 10
+}
+
+class ColorFormatter(logging.Formatter):
+
+    def __init__(self, *args, **kwargs):
+        # can't do super(...) here because Formatter is an old school class
+        logging.Formatter.__init__(self, *args, **kwargs)
+
+    def format(self, record):
+        """
+        Changes record's levelname to use with COLORS enum
+        """
+        
+        levelname = record.levelname
+        start = COLOR_SEQ % (COLORS[levelname])
+        def_record = logging.Formatter.format(self, record)
+        end = RESET_SEQ
+        
+        colored_record = start + def_record + end
+        return colored_record
+
+logging.ColorFormatter = ColorFormatter