import logging
import os

def setup_logger(name, log_file='app.log', level=logging.INFO):
    """
    Set up a logger that can be used across the application.
    :param name: Name of the logger
    :param log_file: Optional log file to write to
    :param level: Logging level (default: INFO)
    :return: Logger instance
    """
    # Define log file location
    log_dir = '/var/www/trellinator.diamondhoofcare.com/logs'
    
    # Ensure the directory exists
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    log_file_path = os.path.join(log_dir, log_file)

    # Set up a logger for the application
    logger = logging.getLogger(name)
    
    # Ensure handlers are added only once
    if not logger.handlers:
        logger.setLevel(level)

        # Set up file handler to write logs to the file
        file_handler = logging.FileHandler(log_file_path)
        file_handler.setLevel(level)

        # Set up console handler to also log to the console (optional)
        console_handler = logging.StreamHandler()
        console_handler.setLevel(level)

        # Define a formatter for logs
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        file_handler.setFormatter(formatter)
        console_handler.setFormatter(formatter)

        # Add handlers to the logger
        logger.addHandler(file_handler)
        logger.addHandler(console_handler)

    # Disable propagation to prevent double logging
    logger.propagate = False

    return logger
