import datetime

class LogList():
  def __init__(self, line_count):
    self.log_list = list()
    self.read_index = 0
    self.write_index = 0
    self.line_count = line_count

  def add_item(self, item):
    self.log_list.append(item)
    self.write_index += 1
    if len(self.log_list) > self.line_count:
      self.log_list.pop(0)

  def log_and_print(self, *args):
    args = [str(i) for i in args]
    item = " ".join(args)
    item = str(datetime.datetime.now())+"   "+str(item)
    self.add_item(item)
    print(item)

  def get_log_list(self):
    return self.log_list

  def get_new_items(self):
    items = self.log_list[self.read_index:]
    self.read_index = self.write_index
    return items


_log_handler = None

def get_log_handler(line_count = 100):
  global _log_handler
  if not _log_handler:
    _log_handler = LogList(line_count)
  return _log_handler