def update_progress(self, file_reader_factory, name, state, log_history):
        file_reader = file_reader_factory.get_file_reader(
            name, self.filename_, log_history)
        if not file_reader:
            return

        line_matcher_name = log_history['line_matcher_name']
        for line in file_reader.readline():
            if line_matcher_name not in self.line_matchers_:
                logging.debug('early exit at\n%s\nbecause %s is not in %s',
                              line, line_matcher_name, self.line_matchers_)
                break

            same_line_matcher_name = line_matcher_name
            while same_line_matcher_name in self.line_matchers_:
                line_matcher = self.line_matchers_[same_line_matcher_name]
                same_line_matcher_name, line_matcher_name = (
                    line_matcher.update_progress(line, log_history)
                )
        log_history['line_matcher_name'] = line_matcher_name
        logging.debug(
            'updated log history %s after processing %s',
            log_history, self
        )
        self.update_progress_from_log_history(state, log_history)
update progress from file.
dataset/ETHPy150Open openstack/compass-core/compass/log_analyzor/file_matcher.py/FileMatcher.update_progress