X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Fsfalogging.py;h=f812517c326141f26feaaf4063edea526e7fb7da;hb=db091e73c33c373b7f6c2c96bd2caf6a2acf0178;hp=9d43d91d7c6f52d810dd977b3ae4f14f49323096;hpb=99e9f96209b9ebfd1853e7b8902a1a0fe893eaa2;p=sfa.git diff --git a/sfa/util/sfalogging.py b/sfa/util/sfalogging.py index 9d43d91d..f812517c 100755 --- a/sfa/util/sfalogging.py +++ b/sfa/util/sfalogging.py @@ -15,21 +15,21 @@ class _SfaLogger: def __init__ (self,logfile=None,loggername=None,level=logging.INFO): # default is to locate loggername from the logfile if avail. if not logfile: - loggername='console' - handler=logging.StreamHandler() - handler.setFormatter(logging.Formatter("%(levelname)s %(message)s")) - else: - if not loggername: - loggername=os.path.basename(logfile) - try: - handler=logging.handlers.RotatingFileHandler(logfile,maxBytes=1000000, backupCount=5) - except IOError: - # This is usually a permissions error becaue the file is - # owned by root, but httpd is trying to access it. - tmplogfile=os.getenv("TMPDIR", "/tmp") + os.path.sep + os.path.basename(logfile) - handler=logging.handlers.RotatingFileHandler(tmplogfile,maxBytes=1000000, backupCount=5) - handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")) - + #loggername='console' + #handler=logging.StreamHandler() + #handler.setFormatter(logging.Formatter("%(levelname)s %(message)s")) + logfile = "/var/log/sfa.log" + + if not loggername: + loggername=os.path.basename(logfile) + try: + handler=logging.handlers.RotatingFileHandler(logfile,maxBytes=1000000, backupCount=5) + except IOError: + # This is usually a permissions error becaue the file is + # owned by root, but httpd is trying to access it. + tmplogfile=os.getenv("TMPDIR", "/tmp") + os.path.sep + os.path.basename(logfile) + handler=logging.handlers.RotatingFileHandler(tmplogfile,maxBytes=1000000, backupCount=5) + handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")) self.logger=logging.getLogger(loggername) self.logger.setLevel(level) self.logger.addHandler(handler) @@ -54,24 +54,21 @@ class _SfaLogger: self.logger.setLevel(logging.DEBUG) #################### - def wrap(fun): - def wrapped(self,msg,*args,**kwds): - native=getattr(self.logger,fun.__name__) - return native(msg,*args,**kwds) - #wrapped.__doc__=native.__doc__ - return wrapped - - @wrap - def critical(): pass - @wrap - def error(): pass - @wrap - def warning(): pass - @wrap - def info(): pass - @wrap - def debug(): pass - + def info(self, msg): + self.logger.info(msg) + + def debug(self, msg): + self.logger.debug(msg) + + def warn(self, msg): + self.logger.warn(msg) + + def error(self, msg): + self.logger.error(msg) + + def critical(self, msg): + self.logger.critical(msg) + # logs an exception - use in an except statement def log_exc(self,message): self.error("%s BEG TRACEBACK"%message+"\n"+traceback.format_exc().strip("\n")) @@ -87,30 +84,13 @@ class _SfaLogger: self.debug("%s BEG STACK"%message+"\n"+to_log) self.debug("%s END STACK"%message) -#################### -# import-related operations go in this file -_import_logger=_SfaLogger(logfile='/var/log/sfa_import.log') -# servers log into /var/log/sfa.log -_server_logger=_SfaLogger(logfile='/var/log/sfa.log') -# clients use the console -_console_logger=_SfaLogger() - -# default is to use the server-side logger -_the_logger=_server_logger - -# clients would change the default by issuing one of these call -def sfa_logger_goes_to_console(): - current_module=sys.modules[globals()['__name__']] - current_module._the_logger=_console_logger - -# clients would change the default by issuing one of these call -def sfa_logger_goes_to_import(): - current_module=sys.modules[globals()['__name__']] - current_module._logger=_import_logger -# this is how to retrieve the 'right' logger -def sfa_logger(): - return _the_logger +info_logger = _SfaLogger(loggername='info', level=logging.INFO) +debug_logger = _SfaLogger(loggername='debug', level=logging.DEBUG) +warn_logger = _SfaLogger(loggername='warning', level=logging.WARNING) +error_logger = _SfaLogger(loggername='error', level=logging.ERROR) +critical_logger = _SfaLogger(loggername='critical', level=logging.CRITICAL) +logger = info_logger ######################################## import time @@ -129,7 +109,7 @@ def profile(logger): result = callable(*args, **kwds) end = time.time() args = map(str, args) - args += ["%s = %s" % (name, str(value)) for (name, value) in kwds.items()] + args += ["%s = %s" % (name, str(value)) for (name, value) in kwds.iteritems()] # should probably use debug, but then debug is not always enabled logger.info("PROFILED %s (%s): %.02f s" % (callable.__name__, ", ".join(args), end - start)) return result @@ -148,9 +128,6 @@ if __name__ == '__main__': logger.setLevel(logging.DEBUG) logger.debug("logger.debug again") - sfa_logger_goes_to_console() - my_logger=sfa_logger() - my_logger.info("redirected to console") @profile(my_logger) def sleep(seconds = 1):