docs: def follow(self, delay=1.0):
          """\
          Iterator generator that returns lines as data is added to the file.
  
          Based on: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/157035
          """
          # TODO: Handle log file rotation
          self.trailing = True
          unchanged_stats = 0
          
          while not self.should_stop_follow:
              where = self.file.tell()
              line = self.file.readline()
              if line:    
                  if self.trailing and line in self.line_terminators:
                      # This is just the line terminator added to the end of the file
                      # before a new line, ignore.
                      self.trailing = False
                      continue
  
                  if line[-1] in self.line_terminators:
                      line = line[:-1]
                      if line[-1:] == '\r\n' and '\r\n' in self.line_terminators:
                          # found crlf
                          line = line[:-1]
  
                  self.trailing = False
                  unchanged_stats = 0
                  yield line
              else:
                  self.trailing = True
                  self.seek(where)
                  yield no_new_line
                  # Try to catch up rotated log file
                  unchanged_stats += 1
                  if unchanged_stats >= self.MAX_UNCHANGED_STATS and \
                          where != os.stat(self.file.name).st_size:
                      logger.info('Reopen log file because file may has been rotated.')
                      self.reopen_file()
  
                  time.sleep(delay)