def logging_setup(conf): logger = logging.getLogger() logger.propagate = False default = '%(asctime)s - %(process)d - %(levelname)s - %(session)s - %(module)s - %(message)s' log_format = conf.get('format', default) formatter = logging.Formatter(log_format) log_level = conf.get('level', 'INFO') logger.setLevel(log_level) logfile = conf.get('logfile') if logfile: logsize = conf.get('logsize', 512 * 1024) retain = conf.get('logretain', 5) handler = ConcurrentRotatingFileHandler(logfile, 'a', logsize, retain) else: handler = logging.StreamHandler() handler.setFormatter(formatter) handler.setLevel(log_level) logger.addHandler(handler) logger.addFilter(SessionFilter()) handler.addFilter(SessionFilter()) logging.getLogger('requests').setLevel('WARN') logging.getLogger('urllib3').setLevel('WARN')
path = os.getcwd() + '/' warningFilter = logging.Filter() errorFilter = logging.Filter() criticalFilter = logging.Filter() # 区分日志等级 warningFilter.filter = lambda level: 30 <= level.levelno <= 30 errorFilter.filter = lambda level: 40 <= level.levelno <= 40 criticalFilter.filter = lambda level: 50 <= level.levelno <= 50 # 日志分三个等级 warningOperation = RotatingFileHandler(path + 'z_warning.log', maxBytes=1 * 1024 * 1024, backupCount=1) warningOperation.addFilter(warningFilter) warningFormat = logging.Formatter('%(asctime)s %(levelname)s %(message)s') warningOperation.setFormatter(warningFormat) errorOperation = RotatingFileHandler(path + 'z_error.log', maxBytes=10 * 1024 * 1024, backupCount=5) errorOperation.addFilter(errorFilter) errorFormat = logging.Formatter('%(asctime)s %(levelname)s %(message)s') errorOperation.setFormatter(errorFormat) criticalOperation = RotatingFileHandler(path + 'z_critical.log', maxBytes=10 * 1024 * 1024, backupCount=2) criticalOperation.addFilter(criticalFilter) criticalFormat = logging.Formatter('%(asctime)s %(levelname)s %(message)s')