def __init__(self, loglevel='WARNING'): super(Consoler, self).__init__() self.cache = Cache() self.cache.start() commands = [ 'help', 'exit', 'cls', 'set', 'connect', 'show', 'search', 'use', 'back', 'cls', 'info', 'opts', 'run' ] comp = Completer(commands) # we want to treat '/' as part of a word, so override the delimiters readline.set_completer_delims(' \t\n;') readline.parse_and_bind("tab: complete") readline.set_completer(comp.complete) self.loghandler = [] # log 模块,确保赋值一次 if globalVar.mainlogger is None: globalVar.mainlogger = logging.getLogger('root') if loglevel == 'DEBUG': globalVar.mainlogger.setLevel(logging.DEBUG) elif loglevel == 'WARNING': globalVar.mainlogger.setLevel(logging.WARNING) else: globalVar.mainlogger.setLevel(logging.INFO) # logging handler formatter = logging.Formatter( '[%(asctime)s] - [%(levelname)s] - %(message)s') # 创建一个handler,用于写入日志文件 # filepath = BASEDIR+'/output/console.log' # if os.path.isfile(filepath): # os.remove(filepath) # fh = logging.handlers.RotatingFileHandler(filepath,maxBytes=10*1024*1024,backupCount=5) # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() fi = logging.Filter('') # fh.addFilter(fi) ch.addFilter(fi) # fh.setFormatter(formatter) ch.setFormatter(formatter) self.loghandler.append(ch) # self.loghandler.append(fh) self._initLogging() globalVar.mainlogger.info('Start console mode')