##// END OF EJS Templates
made routes verification method based only on paths, since it's much faster and enough
made routes verification method based only on paths, since it's much faster and enough

File last commit:

r153:a5a3bcc5 default
r301:752675cd default
Show More
colored_formatter.py
141 lines | 4.8 KiB | text/x-python | PythonLexer
#import logging
## now we patch Python code to add color support to logging.StreamHandler
#def add_coloring_to_emit_windows(fn):
# # add methods we need to the class
# def _out_handle(self):
# import ctypes
# return ctypes.windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE)
# out_handle = property(_out_handle)
#
# def _set_color(self, code):
# import ctypes
# # Constants from the Windows API
# self.STD_OUTPUT_HANDLE = -11
# hdl = ctypes.windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE)
# ctypes.windll.kernel32.SetConsoleTextAttribute(hdl, code)
#
# setattr(logging.StreamHandler, '_set_color', _set_color)
#
# def new(*args):
# FOREGROUND_BLUE = 0x0001 # text color contains blue.
# FOREGROUND_GREEN = 0x0002 # text color contains green.
# FOREGROUND_RED = 0x0004 # text color contains red.
# FOREGROUND_INTENSITY = 0x0008 # text color is intensified.
# FOREGROUND_WHITE = FOREGROUND_BLUE|FOREGROUND_GREEN |FOREGROUND_RED
# # winbase.h
# STD_INPUT_HANDLE = -10
# STD_OUTPUT_HANDLE = -11
# STD_ERROR_HANDLE = -12
#
# # wincon.h
# FOREGROUND_BLACK = 0x0000
# FOREGROUND_BLUE = 0x0001
# FOREGROUND_GREEN = 0x0002
# FOREGROUND_CYAN = 0x0003
# FOREGROUND_RED = 0x0004
# FOREGROUND_MAGENTA = 0x0005
# FOREGROUND_YELLOW = 0x0006
# FOREGROUND_GREY = 0x0007
# FOREGROUND_INTENSITY = 0x0008 # foreground color is intensified.
#
# BACKGROUND_BLACK = 0x0000
# BACKGROUND_BLUE = 0x0010
# BACKGROUND_GREEN = 0x0020
# BACKGROUND_CYAN = 0x0030
# BACKGROUND_RED = 0x0040
# BACKGROUND_MAGENTA = 0x0050
# BACKGROUND_YELLOW = 0x0060
# BACKGROUND_GREY = 0x0070
# BACKGROUND_INTENSITY = 0x0080 # background color is intensified.
#
# levelno = args[1].levelno
# if(levelno>=50):
# color = BACKGROUND_YELLOW | FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_INTENSITY
# elif(levelno>=40):
# color = FOREGROUND_RED | FOREGROUND_INTENSITY
# elif(levelno>=30):
# color = FOREGROUND_YELLOW | FOREGROUND_INTENSITY
# elif(levelno>=20):
# color = FOREGROUND_GREEN
# elif(levelno>=10):
# color = FOREGROUND_MAGENTA
# else:
# color = FOREGROUND_WHITE
# args[0]._set_color(color)
#
# ret = fn(*args)
# args[0]._set_color( FOREGROUND_WHITE )
# #print "after"
# return ret
# return new
#
#def add_coloring_to_emit_ansi(fn):
# # add methods we need to the class
# def new(*args):
# levelno = args[1].levelno
# if(levelno>=50):
# color = '\x1b[31m' # red
# elif(levelno>=40):
# color = '\x1b[31m' # red
# elif(levelno>=30):
# color = '\x1b[33m' # yellow
# elif(levelno>=20):
# color = '\x1b[32m' # green
# elif(levelno>=10):
# color = '\x1b[35m' # pink
# else:
# color = '\x1b[0m' # normal
# args[1].msg = color + args[1].msg + '\x1b[0m' # normal
# #print "after"
# return fn(*args)
# return new
#
#import platform
#if platform.system()=='Windows':
# # Windows does not support ANSI escapes and we are using API calls to set the console color
# logging.StreamHandler.emit = add_coloring_to_emit_windows(logging.StreamHandler.emit)
#else:
# # all non-Windows platforms are supporting ANSI escapes so we use them
# logging.StreamHandler.emit = add_coloring_to_emit_ansi(logging.StreamHandler.emit)
# #log = logging.getLogger()
# #log.addFilter(log_filter())
# #//hdlr = logging.StreamHandler()
# #//hdlr.setFormatter(formatter())
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