예제 #1
0
def sortlog(self,logfile,logger,name="eoldas",logdir=None,debug=True ):
    '''
    A safe interface to logging
    for passing log information between lots of classes
    '''
    import logging
    import time
    from eoldas_Lib import set_up_logfile,dummyprint

    if type(self).__name__  == 'SpecialVariable' and logger != None:
        return logger
    try:
        if 'logger' in self.dict():
            return self.logger
    except:
        pass
    try:
        if 'logger' in self.keys():
            return self.logger
    except:
        pass
    try:
        if type(self).__name__ != 'SpecialVariable':
            this = self.logger
            return self.logger
    except:
        pass

    if logdir == None:
        logdir = '.'

    if name == None:
        name = type(self).__name__ + '.' + str(time.time())

    if logger:
        if type(self).__name__  == 'SpecialVariable':
            return logger
        logger.info('Setting up logger for %s'%name)
        logger = logging.getLogger(name)
	logger.info('Set up')
        return logger
        
    if logfile == None or name == None:
        logger = ParamStorage()
        logger.info  = lambda x:dummyprint( "Info: %s"%x)
        logger.debug = lambda x:dummyprint( "Debug: %s"%x)
        logger.error = lambda x:dummyprint( "Error: %s"%x)
        return logger
    logger = set_up_logfile(logfile,name=name,logdir=logdir,debug=debug)
    return logger