X-Git-Url: https://www.irasnyder.com/gitweb/?p=rarslave2.git;a=blobdiff_plain;f=RarslaveLogger.py;h=d60b105e7883c36868166282d6a8d88255d1537f;hp=83752f02c18a657fcacef5c29c10541a02ab761f;hb=b632cd111e8377968ec1cba64dd72054a6650cde;hpb=e33dad4f4feea215742be92a5a5ed21832275f39 diff --git a/RarslaveLogger.py b/RarslaveLogger.py index 83752f0..d60b105 100644 --- a/RarslaveLogger.py +++ b/RarslaveLogger.py @@ -1,67 +1,84 @@ #!/usr/bin/env python # vim: set ts=4 sts=4 sw=4 textwidth=92: +class MessageType (object): + Fatal = -1 + Normal = 0 + Verbose = 1 + Debug = 2 + class RarslaveMessage (object): - def __init__ (self, msg, printquiet): + def __init__ (self, msg, type=MessageType.Normal): self.msg = msg - self.printquiet = printquiet + self.type = type def __repr__ (self): return "%s" % self.msg + def isFatal (self): + return self.type == MessageType.Fatal + + def isNormal (self): + return self.type == MessageType.Normal + def isVerbose (self): - # A message is verbose only if we should - # print it when we are not printing quietly - return not self.printquiet + return self.type == MessageType.Verbose + + def isDebug (self): + return self.type == MessageType.Debug class RarslaveLogger (object): # This class will log multiple messages, one for each set that is operated on. # It will then be able to print all of them out. def __init__ (self): - self.__msg_dict = {} + self.__messages = [] + + def addMessage (self, msg, type=MessageType.Normal): + self.__messages.append (RarslaveMessage (msg, type)) + + def hasFatalMessages (self): + for m in self.__messages: + if m.isFatal (): + return True - def __get_key (self, id): - """__get_key (id) -> key""" - # Get a valid key which will always be the same as any other similar key, even if - # the actual memory reference is different. - return str(id) + return False - def addMessage (self, id, msg, printquiet=True): - # Add a message to the dictionary, to be printed later. - # The printquiet variable controls whether the message will be printed - # normally, or only in verbose mode. The default is to print always. + def hasNormalMessages (self): + for m in self.__messages: + if m.isNormal (): + return True - # Get the key - key = self.__get_key (id) + return False - # Create the dictionary entry if necessary - if key not in self.__msg_dict.keys(): - self.__msg_dict[key] = [] + def hasVerboseMessages (self): + for m in self.__messages: + if m.isVerbose (): + return True - # Get the list from the dictionary, then add the message to it - self.__msg_dict[key].append (RarslaveMessage (msg, printquiet)) + return False - def printAllMessages (self, verbose=False): - # Print all messages in groups by id - for k in self.__msg_dict.keys(): - for msg in self.__msg_dict[k]: + def hasDebugMessages (self): + for m in self.__messages: + if m.isDebug (): + return True - # Skip verbose messages if we're not in verbose mode - if msg.isVerbose() and not verbose: - continue + return False - print msg + def printAllMessages (self, level=MessageType.Normal): + # Print all messages with level upto and including $level. + for m in self.__messages: + if m.type <= level: + print m - print + def printLoglevel (self, level=MessageType.Normal): + # Print all message with exactly the loglevel given + for m in self.__messages: + if m.type == level: + print m def main (): - logger = RarslaveLogger () - logger.addMessage (1, 'hello 1') - logger.addMessage (2, 'hello 2') - logger.addMessage (2, 'world 2') - logger.addMessage (1, 'world 1') - logger.printAllMessages () + pass if __name__ == '__main__': main ()