#!/usr/bin/env python

"""
Dit script controleert of de logs directory bestaat en toegankelijk is,
en test of logging correct werkt.
"""

import os
import sys
import logging
import traceback

def check_logs_directory():
    # Verkrijg het absolute pad naar de logs directory
    base_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
    logs_dir = os.path.join(base_dir, 'logs')

    print(f"\nControleren van logs directory: {logs_dir}")

    # Controleer of de directory bestaat
    if not os.path.exists(logs_dir):
        print("  - Directory bestaat niet. Proberen aan te maken...")
        try:
            os.makedirs(logs_dir, exist_ok=True)
            print("  - Directory succesvol aangemaakt.")
        except Exception as e:
            print(f"  - FOUT: Kan directory niet aanmaken: {e}")
            return False
    else:
        print("  - Directory bestaat.")

    # Controleer schrijfrechten
    if not os.access(logs_dir, os.W_OK):
        print("  - FOUT: Geen schrijfrechten voor de logs directory.")
        return False
    else:
        print("  - Directory is schrijfbaar.")

    # Probeer een testbestand te schrijven
    test_file = os.path.join(logs_dir, 'test_write.log')
    try:
        with open(test_file, 'w') as f:
            f.write('Test schrijven naar logs directory.\n')
        print(f"  - Succesvol testbestand geschreven naar {test_file}")
        os.remove(test_file)  # Verwijder het testbestand
        print("  - Testbestand verwijderd.")
    except Exception as e:
        print(f"  - FOUT: Kan niet schrijven naar logs directory: {e}")
        return False

    return True

def check_logging_config():
    print("\nControleren van logging configuratie...")

    try:
        from config.logging_config import configure_logging
        configure_logging()
        print("  - Logging configuratie geladen.")

        # Test enkele loggers
        loggers_to_test = ['eveai_app', 'eveai_workers', 'eveai_api', 'tuning']
        for logger_name in loggers_to_test:
            logger = logging.getLogger(logger_name)
            logger.info(f"Test log bericht van {logger_name}")
            print(f"  - Logger '{logger_name}' getest.")

        print("  - Alle loggers succesvol getest.")
        return True

    except Exception as e:
        print(f"  - FOUT bij laden van logging configuratie: {e}")
        traceback.print_exc()
        return False

def main():
    print("\nEveAI Logging Test Utility")
    print("===========================\n")

    directory_ok = check_logs_directory()
    if not directory_ok:
        print("\nPROBLEEM: De logs directory is niet toegankelijk of schrijfbaar.")
        print("Oplossingen:")
        print("  1. Zorg ervoor dat de gebruiker die de applicatie uitvoert schrijfrechten heeft voor de logs directory.")
        print("  2. Voer het commando uit: mkdir -p logs && chmod 777 logs")

    config_ok = check_logging_config()
    if not config_ok:
        print("\nPROBLEEM: De logging configuratie kon niet worden geladen.")
        print("Controleer de config/logging_config.py file.")

    if directory_ok and config_ok:
        print("\nALLES OK: Logging lijkt correct geconfigureerd.")
        print("Controleer de logbestanden in de 'logs' directory voor de testberichten.")
    else:
        print("\nEr zijn problemen gevonden die opgelost moeten worden.")
        return 1

    return 0

if __name__ == "__main__":
    sys.exit(main())
