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

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