2.0 refactoring:
* Add type for most of functions
* Remove old fio run code, move to RPC/pluggable
* Remove most of sensors code, will move then to RPC
* Other refactoring
diff --git a/wally/logger.py b/wally/logger.py
new file mode 100644
index 0000000..43eff6b
--- /dev/null
+++ b/wally/logger.py
@@ -0,0 +1,82 @@
+import logging
+
+
+def color_me(color):
+ RESET_SEQ = "\033[0m"
+ COLOR_SEQ = "\033[1;%dm"
+
+ color_seq = COLOR_SEQ % (30 + color)
+
+ def closure(msg):
+ return color_seq + msg + RESET_SEQ
+ return closure
+
+
+class ColoredFormatter(logging.Formatter):
+ BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
+
+ colors = {
+ 'WARNING': color_me(YELLOW),
+ 'DEBUG': color_me(BLUE),
+ 'CRITICAL': color_me(YELLOW),
+ 'ERROR': color_me(RED)
+ }
+
+ def __init__(self, msg, use_color=True, datefmt=None):
+ logging.Formatter.__init__(self, msg, datefmt=datefmt)
+ self.use_color = use_color
+
+ def format(self, record):
+ orig = record.__dict__
+ record.__dict__ = record.__dict__.copy()
+ levelname = record.levelname
+
+ prn_name = levelname + ' ' * (8 - len(levelname))
+ if levelname in self.colors:
+ record.levelname = self.colors[levelname](prn_name)
+ else:
+ record.levelname = prn_name
+
+ # super doesn't work here in 2.6 O_o
+ res = logging.Formatter.format(self, record)
+
+ # res = super(ColoredFormatter, self).format(record)
+
+ # restore record, as it will be used by other formatters
+ record.__dict__ = orig
+ return res
+
+
+def setup_loggers(def_level=logging.DEBUG, log_fname=None):
+ logger = logging.getLogger('wally')
+ logger.setLevel(logging.DEBUG)
+ sh = logging.StreamHandler()
+ sh.setLevel(def_level)
+
+ log_format = '%(asctime)s - %(levelname)s - %(name)-15s - %(message)s'
+ colored_formatter = ColoredFormatter(log_format, datefmt="%H:%M:%S")
+
+ sh.setFormatter(colored_formatter)
+ logger.addHandler(sh)
+
+ logger_api = logging.getLogger("wally.fuel_api")
+
+ if log_fname is not None:
+ fh = logging.FileHandler(log_fname)
+ log_format = '%(asctime)s - %(levelname)8s - %(name)-15s - %(message)s'
+ formatter = logging.Formatter(log_format, datefmt="%H:%M:%S")
+ fh.setFormatter(formatter)
+ fh.setLevel(logging.DEBUG)
+ logger.addHandler(fh)
+ logger_api.addHandler(fh)
+ else:
+ fh = None
+
+ logger_api.addHandler(sh)
+ logger_api.setLevel(logging.WARNING)
+
+ logger = logging.getLogger('paramiko')
+ logger.setLevel(logging.WARNING)
+ # logger.addHandler(sh)
+ if fh is not None:
+ logger.addHandler(fh)