2002-02-07 18:14:33 +00:00

168 lines
5.1 KiB
Python

"""Notifier module: contains methods for handling information output
for the programmer/user"""
from LoggerGlobal import *
import time
class Notifier:
def __init__(self, name, logger=None):
"""__init__(self, string, Logger=None)
Create a new instance of the Notifier class with a given name
and an optional Logger class for piping output to. If no logger
specified, use the global default"""
self.__name = name
if (logger==None):
self.__logger = defaultLogger
else:
self.__logger = logger
# Global default levels are initialized here
self.__info = 1
self.__warning = 1
self.__debug = 0
self.__logging = 0
def getTime(self):
"""
Return the time as a string suitable for printing at the
head of any notify message
"""
# for some strange reason, time.time() updates only once/minute if
# the task is out of focus on win32. time.clock doesnt have this prob
return time.strftime(":%m-%d-%Y %H:%M:%S ", time.localtime(time.time()))
def __str__(self):
"""__str__(self)
Print handling routine"""
return "%s: info = %d, warning = %d, debug = %d, logging = %d" % \
(self.__name, self.__info, self.__warning, self.__debug, self.__logging)
# Severity funcs
def setSeverity(self, severity):
import NotifySeverity
if severity >= NotifySeverity.NSError:
self.setWarning(0)
self.setInfo(0)
self.setDebug(0)
elif severity == NotifySeverity.NSWarning:
self.setWarning(1)
self.setInfo(0)
self.setDebug(0)
elif severity == NotifySeverity.NSInfo:
self.setWarning(1)
self.setInfo(1)
self.setDebug(0)
elif severity <= NotifySeverity.NSDebug:
self.setWarning(1)
self.setInfo(1)
self.setDebug(1)
def getSeverity(self):
import NotifySeverity
if self.getDebug():
return NotifySeverity.NSDebug
elif self.getInfo():
return NotifySeverity.NSInfo
elif self.getWarning():
return NotifySeverity.NSWarning
else:
return NotifySeverity.NSError
# error funcs
def error(self, errorString, exception=StandardError):
"""error(self, string, Exception=StandardError)
Raise an exception with given string and optional type:
Exception: error"""
string = (self.getTime() + str(exception) + ": " + self.__name + ": " + errorString)
self.__log(string)
raise exception(errorString)
# warning funcs
def warning(self, warningString):
"""warning(self, string)
Issue the warning message if warn flag is on"""
if (self.__warning):
string = (self.getTime() + self.__name + '(warning): ' + warningString)
self.__log(string)
print(string)
return 1 # to allow assert(myNotify.warning("blah"))
def setWarning(self, bool):
"""setWarning(self, int)
Enable/Disable the printing of warning messages"""
self.__warning = bool
def getWarning(self):
"""getWarning(self)
Return whether the printing of warning messages is on or off"""
return(self.__warning)
# debug funcs
def debug(self, debugString):
"""debug(self, string)
Issue the debug message if debug flag is on"""
if (self.__debug):
string = (self.getTime() + self.__name + '(debug): ' + debugString)
self.__log(string)
print(string)
return 1 # to allow assert(myNotify.debug("blah"))
def setDebug(self, bool):
"""setDebug(self, int)
Enable/Disable the printing of debug messages"""
self.__debug = bool
def getDebug(self):
"""getDebug(self)
Return whether the printing of debug messages is on or off"""
return(self.__debug)
# info funcs
def info(self, infoString):
"""info(self, string)
Print the given informational string, if info flag is on"""
if (self.__info):
string = (self.getTime() + self.__name + '(info): ' + infoString)
self.__log(string)
print(string)
return 1 # to allow assert(myNotify.info("blah"))
def getInfo(self):
"""getInfo(self)
Return whether the printing of info messages is on or off"""
return(self.__info)
def setInfo(self, bool):
"""setInfo(self, int)
Enable/Disable informational message printing"""
self.__info = bool
# log funcs
def __log(self, logEntry):
"""__log(self, string)
Determine whether to send informational message to the logger"""
if (self.__logging):
self.__logger.log(logEntry)
def getLogging(self):
"""getLogging(self)
Return 1 if logging enabled, 0 otherwise"""
return (self.__logging)
def setLogging(self, bool):
"""setLogging(self, int)
Set the logging flag to int (1=on, 0=off)"""
self.__logging = bool