code: def tail(self, stack_name, cancel, log_func=_tail_print, sleep_time=5,
               include_initial=True):
          
          # First dump the full list of events in chronological order and keep
          # track of the events we've seen already
          seen = set()
          initial_events = self.get_events(stack_name)
          for e in initial_events:
              if include_initial:
                  log_func(e)
              seen.add(e['EventId'])
  
          # Now keep looping through and dump the new events
          while True:
              events = self.get_events(stack_name)
              for e in events:
                  if e['EventId'] not in seen:
                      log_func(e)
                      seen.add(e['EventId'])
              if cancel.wait(sleep_time):
                  return
docs: Show and then tail the event log