コード例 #1
0
ファイル: consoler_class.py プロジェクト: 5l1v3r1/Hammer-3
    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')