3 from datetime import datetime
19 def __new__(cls, name, out=sys.stderr):
20 if cls.__instance is None:
21 cls.__instance = super(Logger, cls).__new__(cls)
24 def __init__(self, name, out=sys.stderr):
30 def _set_level(self, value):
31 self.__level = int(value)
32 level = property(_get_level, _set_level)
34 def log(self, level, *message):
35 if level > self.__level:
41 except UnicodeEncodeError:
42 return unicode(m).encode('utf-8')
44 msg = ' '.join(map(ucode, message))
45 ts = datetime.now().strftime('%Y-%m-%d %H:%M')
46 self.__out.write('[%s] %s\n' % (ts, msg))
48 def debug(self, *message):
49 self.log(self.DEBUG, *message)
51 def info(self, *message):
52 self.log(self.INFO, *message)
54 def warn(self, *message):
55 self.log(self.WARNING, *message)
57 def error(self, *message):
58 self.log(self.ERROR, *message)
60 def panic(self, *message):
61 self.log(self.PANIC, *message)