Skip to main content

Command Palette

Search for a command to run...

# Guía Divertida y Definitiva del Logging en Java 🪵😄

Published
3 min read
# Guía Divertida y Definitiva del Logging en Java 🪵😄

¿Alguna vez sentiste que tu aplicación Java está poseída porque no sabes por qué falla? ¡El logging es tu superpoder para ver en la oscuridad! 🔦

En esta guía vamos a descubrir cómo convertirte en el Sherlock Holmes del código usando logs. Te enseñaré desde los básicos hasta hacks avanzados de logging que harán que tu app cante como un canario. 🐤


¿Qué hace especial al logging en Java?

Java es como el buffet de los frameworks de logging: tienes muchas opciones y puedes combinarlas. Desde el clásico java.util.logging (JUL), hasta los poderosos Log4j2, SLF4J, Logback, y más.

¡Vamos a explorarlos uno por uno!


🧱 java.util.logging (JUL) – El clásico

Está incorporado en Java desde siempre. Es como la bicicleta de cuando eras pequeño: sencilla, confiable... pero no te va a ganar una carrera.

import java.util.logging.*;

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

    public static void main(String[] args) throws Exception {
        FileHandler archivo = new FileHandler("miapp.log");
        archivo.setFormatter(new SimpleFormatter());

        logger.addHandler(archivo);
        logger.setUseParentHandlers(false);

        logger.info("¡Empezamos la fiesta de los logs!");
    }
}

✅ Ventajas: sin dependencias extra, siempre está ahí.
❌ Desventajas: configuración algo fea, pocos juguetes para jugar.


🔥 Log4j 2 – El musculoso

Más rápido, más configurable y con mejor rendimiento.

import org.apache.logging.log4j.*;

public class Log4jEjemplo {
    private static final Logger log = LogManager.getLogger();

    public static void main(String[] args) {
        log.info("Procesando pedido de empanadas...");
        log.warn("¡Ojo! Las empanadas vienen sin ají.");
        log.error("¡Se quemaron las empanadas!");
    }
}

Ventajas: asincrónico, configurable al 100%, ideal para apps exigentes.
Consejo: usa log4j2.xml para configurarlo como un profesional.


🤹‍♂️ SLF4J + Logback – La dupla de moda

SLF4J es una fachada. Te deja cambiar de backend sin tocar tu código.

import org.slf4j.*;

public class Slf4jEjemplo {
    private static final Logger log = LoggerFactory.getLogger(Slf4jEjemplo.class);

    public static void main(String[] args) {
        log.info("Login del usuario: Goku");
        log.debug("Goku intenta autenticarse usando energía espiritual...");
    }
}

Logback (el motor detrás) es superligero y perfecto para Spring Boot.


🧠 Problemas comunes de logging

  • Nada se imprime: probablemente faltan los archivos .properties o .xml.
  • No ves tus mensajes: revisa que el nivel de logs esté configurado bien (DEBUG, INFO, etc.).
  • El disco explota de logs: implementa rotación de archivos.

🐢 ¿Tu app va lenta? Tal vez estás loggeando demasiado

En lugar de esto (no lo hagas):

log.debug("Resultado: " + calculoLento());

Haz esto (¡mucho mejor!):

log.debug("Resultado: {}", () -> calculoLento());

Y si estás en producción, usa AsyncAppender para escribir los logs sin frenar tu app.


📦 Buenas prácticas

  • INFO: para cosas útiles ("Pedido recibido").
  • WARN: advertencias que no rompen pero preocupan ("Stock bajo").
  • ERROR: cosas que explotaron feo ("DB no responde").
  • DEBUG: útil mientras desarrollás.
  • TRACE: para cuando querés ver TODO.

🧾 Logging estructurado

¿Por qué conformarte con logs planos? ¡Agregá contexto!

{
  "timestamp": "2025-05-22T12:00:00",
  "level": "ERROR",
  "mensaje": "Se rompió la piñata",
  "usuario": "mario.bros",
  "evento": "fiesta-de-cumple"
}

Ideal para herramientas como ELK, Grafana o Last9.


🕵️‍♂️ Logging con contexto

¿Querés saber qué usuario hizo qué en cada request? Usá MDC o NDC para agregar datos como requestId, userId, IP, etc.

MDC.put("usuario", "goku");
logger.info("Transformación activada"); // [usuario=goku]

🎯 Conclusión

El logging es tu arma secreta contra bugs, errores misteriosos y monstruos en producción. Con buenas prácticas, herramientas adecuadas y un poco de amor, ¡puede salvarte de madrugadas sin dormir! 😴

¿Listo para convertirte en un ninja del logging? 🥷🪵

2 views

More from this blog

F

FrodyDev

21 posts

Apasionado por la programación desde los 14. En comparto noticias, tips y curiosidades del mundo Java. ¡Bienvenido a este rincón para devs con café en vena! ☕💻