mirror of
1
0
Fork 0
dotbot/dotbot/messenger/messenger.py

63 lines
1.6 KiB
Python
Raw Permalink Normal View History

from ..util.singleton import Singleton
2014-03-19 23:07:30 -04:00
from .color import Color
from .level import Level
2022-01-30 18:48:30 -05:00
class Messenger(metaclass=Singleton):
2022-01-30 18:48:30 -05:00
def __init__(self, level=Level.LOWINFO):
2014-03-19 23:07:30 -04:00
self.set_level(level)
self.use_color(True)
2014-03-19 23:07:30 -04:00
def set_level(self, level):
self._level = level
def use_color(self, yesno):
self._use_color = yesno
2014-03-19 23:07:30 -04:00
def log(self, level, message):
2022-01-30 18:48:30 -05:00
if level >= self._level:
print("%s%s%s" % (self._color(level), message, self._reset()))
2014-03-19 23:07:30 -04:00
def debug(self, message):
self.log(Level.DEBUG, message)
def lowinfo(self, message):
self.log(Level.LOWINFO, message)
def info(self, message):
self.log(Level.INFO, message)
def warning(self, message):
self.log(Level.WARNING, message)
def error(self, message):
self.log(Level.ERROR, message)
2014-10-17 10:05:47 -04:00
2014-03-19 23:07:30 -04:00
def _color(self, level):
2022-01-30 18:48:30 -05:00
"""
2014-03-19 23:07:30 -04:00
Get a color (terminal escape sequence) according to a level.
2022-01-30 18:48:30 -05:00
"""
if not self._use_color:
2022-01-30 18:48:30 -05:00
return ""
2014-03-19 23:07:30 -04:00
elif level < Level.DEBUG:
2022-01-30 18:48:30 -05:00
return ""
2014-03-19 23:07:30 -04:00
elif Level.DEBUG <= level < Level.LOWINFO:
return Color.YELLOW
elif Level.LOWINFO <= level < Level.INFO:
return Color.BLUE
elif Level.INFO <= level < Level.WARNING:
return Color.GREEN
elif Level.WARNING <= level < Level.ERROR:
return Color.MAGENTA
elif Level.ERROR <= level:
return Color.RED
def _reset(self):
2022-01-30 18:48:30 -05:00
"""
2014-03-19 23:07:30 -04:00
Get a reset color (terminal escape sequence).
2022-01-30 18:48:30 -05:00
"""
if not self._use_color:
2022-01-30 18:48:30 -05:00
return ""
2014-03-19 23:07:30 -04:00
else:
return Color.RESET