<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_logging_file(maximum_logging_files=10, retries=2 ^ 16):
 """ Returns the logging file path. :param maximum_logging_files: Maximum allowed logging files in the logging directory. :type maximum_logging_files: int :param retries: Number of retries to generate a unique logging file name. :type retries: int :return: Logging file path. :rtype: unicode """


    logging_directory = os.path.join(RuntimeGlobals.user_application_data_directory, Constants.logging_directory)
    for file in sorted(foundations.walkers.files_walker(logging_directory),
                       key=lambda y: os.path.getmtime(os.path.abspath(y)), reverse=True)[maximum_logging_files:]:
        try:
            os.remove(file)
        except OSError:
            LOGGER.warning(
                "!> {0} | Cannot remove '{1}' file!".format(__name__, file, Constants.application_name))

    path = None
    for i in range(retries):
        path = os.path.join(RuntimeGlobals.user_application_data_directory,
                            Constants.logging_directory,
                            Constants.logging_file.format(foundations.strings.get_random_sequence()))
        if not os.path.exists(path):
            break

    if path is None:
        raise umbra.exceptions.EngineConfigurationError(
            "{0} | Logging file is not available, '{1}' will now close!".format(__name__, Constants.application_name))

    LOGGER.debug("> Current Logging file: '{0}'".format(path))

    return path