<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def logfile_generator(self):
 """Yield each line of the file, or the next line if several files."""

        if not self.args['exclude']:
            # ask all filters for a start_limit and fast-forward to the maximum
            start_limits = [f.start_limit for f in self.filters
                            if hasattr(f, 'start_limit')]

            if start_limits:
                for logfile in self.args['logfile']:
                    logfile.fast_forward(max(start_limits))

        if len(self.args['logfile']) > 1:
            # merge log files by time
            for logevent in self._merge_logfiles():
                yield logevent
        else:
            # only one file
            for logevent in self.args['logfile'][0]:
                if self.args['timezone'][0] != 0 and logevent.datetime:
                    logevent._datetime = (logevent.datetime +
                                          timedelta(hours=self
                                                    .args['timezone'][0]))
                yield logevent