def METHOD_NAME(*args, **kwds):
    """ If logger is not set, uses the logger named <func.__module__>.
    Logs the function entry and exit.
    :return: func result
    """
    if self.logger is None:
        self.logger = Logger(func.__module__)
    if self.func_name is None:
        self.func_name = func.__name__
    self.logger.log_at_level(
            self.level, self.ENTRY_MESSAGE.format(self.func_name))
    f_result = func(*args, **kwds)
    self.logger.log_at_level(
            self.level, self.EXIT_MESSAGE.format(self.func_name))
    return f_result