code: def probe(self):
          
  
          # make sure the filehandler is still valid
          # (e.g. file stat hasnt changed, file exists etc.)
          if not self.validate_file_handler():
              return []
  
          messages = []
  
          # read any new lines and push them onto the stack
          for line in self.fh.readlines(self.max_lines):
              data = {"path":self.path}
              msg = self.new_message()
  
              # process the line - this is where parsing happens
              parsed = self.process_line(line, data)
              if not parsed:
                  continue
              data.update(parsed)
  
              # process the probe - this is where data assignment
              # happens
              data = self.process_probe(data)
              msg["data"] = [data]
              messages.append(msg)
  
  
          # process all new messages before returning them
          # for emission
          messages = self.process_messages(messages)
  
          return messages
docs: Probe the file for new lines