importloggingimportosimporttime
LEVELS={'debug': logging.DEBUG,'info': logging.INFO,'warning': logging.WARNING,'error': logging.ERROR,'critical': logging.CRITICAL
}
logger=logging.getLogger()
level= 'default'
defcreate_file(filename):
path= filename[0:filename.rfind('/')]if notos.path.isdir(path):
os.makedirs(path)if notos.path.isfile(filename):
fd= open(filename, mode='w', encoding='utf-8')
fd.close()else:pass
defset_handler(levels):if levels == 'error':
logger.addHandler(MyLog.err_handler)
logger.addHandler(MyLog.handler)defremove_handler(levels):if levels == 'error':
logger.removeHandler(MyLog.err_handler)
logger.removeHandler(MyLog.handler)defget_current_time():returntime.strftime(MyLog.date, time.localtime(time.time()))classMyLog:
path= os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
log_file= path+'/log/'+time.strftime('%Y_%m_%d')+'_log.log'err_file= path+'/log/'+time.strftime('%Y_%m_%d')+'_err.log'logger.setLevel(LEVELS.get(level, logging.NOTSET))
create_file(log_file)
create_file(err_file)
date= '%Y-%m-%d %H:%M:%S'handler= logging.FileHandler(log_file, encoding='utf-8')
err_handler= logging.FileHandler(err_file, encoding='utf-8')
@staticmethoddefdebug(log_meg):
set_handler('debug')
logger.debug("[DEBUG" + get_current_time() + "]" +log_meg)
remove_handler('debug')
@staticmethoddefinfo(log_meg):
set_handler('info')
logger.info("[INFO" + get_current_time() + "]" +log_meg)
remove_handler('info')
@staticmethoddefwarning(log_meg):
set_handler('warning')
logger.warning("[WARNING" + get_current_time() + "]" +log_meg)
remove_handler('warning')
@staticmethoddeferror(log_meg):
set_handler('error')
logger.error("[ERROR" + get_current_time() + "]" +log_meg)
remove_handler('error')
@staticmethoddefcritical(log_meg):
set_handler('critical')
logger.error("[CRITICAL" + get_current_time() + "]" +log_meg)
remove_handler('critical')if __name__ == "__main__":
MyLog.debug("This is debug message")
MyLog.info("This is info message")
MyLog.warning("This is warning message")
MyLog.error("This is error")
MyLog.critical("This is critical message")