/*
 */
package com.teltonikaServer.persistence;

import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;

public class ApplicationLogger {

    public static String logFile;
    
    public ApplicationLogger(String filename) {
        ApplicationLogger.logFile = filename;
    }

    private static final Logger logger = Logger.getLogger(ApplicationLogger.class.getName());

    public void logEvent(Level level,String errorMessage) {
        try {
             
            // Configurar el manejador de archivo para el logger
            FileHandler fileHandler = new FileHandler(ApplicationLogger.logFile, true);
            fileHandler.setFormatter(new CustomFormatter());

            // Añadir el manejador de archivo al logger
            logger.addHandler(fileHandler);

            // Loggear el mensaje de error con fecha y hora
            logger.log(level, "[" + getCurrentDateTime() + "] " + errorMessage);

            // Cerrar el manejador de archivo después de loggear
            fileHandler.close();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static String getCurrentDateTime() {
        // Obtener la fecha y hora actual en un formato específico
        // Puedes ajustar el formato según tus preferencias
        // Aquí se utiliza el formato "dd-MM-yyyy HH:mm:ss"
        return java.time.LocalDateTime.now().format(java.time.format.DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"));
    }

    private static class CustomFormatter extends Formatter {
        @Override
        public String format(LogRecord record) {
            return "\n[" + record.getLevel() + "] "+ record.getMessage(); // Formatear el mensaje sin agregar un salto de línea adicional
        }
    }

    
    public static void main(String[] args) {
        // Ejemplo de uso del método logEvent
        ApplicationLogger sampleLog = new ApplicationLogger("sample.log");
        sampleLog.logEvent(Level.WARNING,"Se ha producido un error crítico en la aplicación.");
    }
    
}
