import os


def parse_log_file(filename: str):
    """
    Parse a log file and return a list of log entries.

    Each log entry is a dictionary with keys for the timestamp, name, level, and message.

    Args:
        filename (str): The name of the log file.

    Returns:
        list: A list of log entries.

    Raises:
        FileNotFoundError: If the log file does not exist.
        ValueError: If a log entry does not have the correct format.
    """
    # Check if the file exists
    if not os.path.exists(filename):
        raise FileNotFoundError(
            f"The file {filename} does not exist."
        )

    log_entries = []

    with open(filename, "r") as file:
        for line in file:
            parts = line.split(" - ")
            # Check if the log entry has the correct format
            if len(parts) != 4:
                raise ValueError(
                    f"The log entry '{line}' does not have the"
                    " correct format."
                )
            timestamp, name, level, message = parts
            log_entry = {
                "timestamp": timestamp,
                "name": name,
                "level": level,
                "message": message.rstrip("\n"),
            }
            log_entries.append(log_entry)

    return log_entries
