Saltar al contenido principal

Logs

En Java, los logs se usan para registrar información sobre el funcionamiento de un programa, como errores, advertencias o eventos importantes. Esto facilita la depuración y el seguimiento de la ejecución.

Hay varias formas de hacer logs, pero las más comunes son:

Logger permite gestionar logs con diferentes niveles:

  • SEVERE: Errores graves.
  • WARNING: Advertencias.
  • INFO: Información general.
  • CONFIG: Configuración.
  • FINE, FINER, FINEST: Para depuración detallada.
import java.util.logging.Logger;

public class EjemploLogger {
private static final Logger logger = Logger.getLogger(EjemploLogger.class.getName());

public static void main(String[] args) {
logger.info("El programa comenzó.");
logger.warning("Esto es una advertencia.");
logger.severe("Este es un error grave.");
}
}

Salida por consola:

ago 18, 2025 11:28:36 A. M. logs.EjemploLogger main
INFO: El programa comenzó.
ago 18, 2025 11:28:36 A. M. logs.EjemploLogger main
WARNING: Esto es una advertencia.
ago 18, 2025 11:28:36 A. M. logs.EjemploLogger main
SEVERE: Este es un error grave.

Para guardar los logs en un archivo debes añadir un FileHandler:

import java.io.IOException;
import java.util.logging.*;

public class LogsArchivo {
private static final Logger logger = Logger.getLogger(LogsArchivo.class.getName());

public static void main(String[] args) {
// Este try es necesario para escribir en un archivo
try {
// Creamos un FileHandler para guardar los logs en "registro.log"
FileHandler fileHandler = new FileHandler("registro.log", true);
fileHandler.setFormatter(new SimpleFormatter()); // Formato simple
logger.addHandler(fileHandler);

// Mensajes de log
logger.info("El programa comenzó.");
logger.warning("Advertencia en el programa.");
logger.severe("¡Error crítico!");

} catch (IOException e) {
e.printStackTrace();
}
}
}

Salida por consola:

ago 18, 2025 11:33:16 A. M. logs.LogsArchivo main
INFO: El programa comenzó.
ago 18, 2025 11:33:17 A. M. logs.LogsArchivo main
WARNING: Advertencia en el programa.
ago 18, 2025 11:33:17 A. M. logs.LogsArchivo main
SEVERE: ¡Error crítico!

Añadir la pila de error

Con el método log() de la clase Logger automáticamente se incluirá la traza de la pila:

import java.util.logging.*;

public class LoggerStackTrace {
private static final Logger logger = Logger.getLogger(LoggerStackTrace.class.getName());

public static void main(String[] args) {
try {
int resultado = 10 / 0; // Lanza ArithmeticException
} catch (ArithmeticException e) {
logger.log(Level.SEVERE, "Error al dividir por cero", e);
}
}
}

Salida:

ago 18, 2025 11:34:31 A. M. logs.LoggerStackTrace main
SEVERE: Error al dividir por cero
java.lang.ArithmeticException: / by zero
at logs.LoggerStackTrace.main(LoggerStackTrace.java:8)