code: def info(self, *args, **kwargs):
          
          self.lock()
          try:
              return logger.info(*args, **kwargs)
          finally:
              self.unlock()
docs: Logs the line of the current thread owns the underlying lock, or
          blocks.