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:
- Usando
System.out.println()(NO recomendado para logs reales) - Usando
java.util.logging.Logger.
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)