HOWTO · Java

console.log en Java

Java no incluye la función console.log de JavaScript. Aprende a mostrar mensajes con System.out.println y cuándo elegir una API o un framework de registro para tu aplicación.

En esta página

Java no incluye una función console.log; ese nombre pertenece a JavaScript. Para mostrar un mensaje sencillo en un programa Java, usa System.out.println. Si una aplicación necesita niveles, destinos configurables o un formato uniforme, recurre a una API o a un framework de registro.

Usar System.out.println

System.out.println escribe un valor en la salida estándar y añade un salto de línea. Este programa Java completo muestra un saludo:

public class ConsoleExample {
    public static void main(String[] args) {
        String message = "Hello, Java!";
        System.out.println(message);
    }
}
Hello, Java!

El programa envía el valor de message a la salida estándar. Este método es adecuado para un programa pequeño de línea de comandos, un diagnóstico rápido o un mensaje destinado a quien ejecuta el programa. Es sencillo, pero no ofrece niveles de registro, marcas de tiempo ni destinos configurables. En una aplicación grande, resulta más difícil filtrar y administrar muchos mensajes impresos de forma dispersa.

Si te resulta útil una sintaxis de llamada familiar, puedes crear tu propio envoltorio: define una clase Console con un método static void log(String message) cuyo cuerpo llame a System.out.println(message) y luego invoca Console.log("Ready"). Console.log sería código escrito por ti, no una API integrada en Java; esto no añade a Java la función console.log de JavaScript.

Usar frameworks de registro de Java

Una API de registro permite que el código guarde mensajes según su gravedad, mientras que una implementación se ocupa del formato y de destinos como la consola o un archivo. Los niveles suelen distinguir los mensajes de diagnóstico de las advertencias y los errores. La configuración permite decidir qué mensajes se muestran y adónde se envían, de modo que la salida rutinaria no tenga que mezclarse con los registros de la aplicación.

Java incluye java.util.logging en su biblioteca estándar. Es una opción práctica si quieres una API de registro sin añadir una dependencia de terceros. Log4j es una implementación de registro independiente que permite configurar los componentes de salida (appenders) y los formatos. SLF4J cumple una función distinta: es una fachada que proporciona a las aplicaciones una API de registro común y necesita un proveedor o enlace compatible para generar la salida. En una aplicación, elige una sola implementación, salvo que tengas un motivo concreto para conectar o combinar sistemas de registro.

Este es un ejemplo breve con java.util.logging: obtén un registrador con Logger logger = Logger.getLogger(MyClass.class.getName()); y luego llama a logger.info("Service started");, logger.warning("Retrying request"); o logger.severe("Request failed");. Estas llamadas usan el sistema de registro integrado en el JDK, así que no hace falta añadir dependencias. Con el controlador de consola predeterminado, una línea representativa contiene una marca de tiempo, el nivel y el mensaje; por ejemplo, INFO: Service started. El prefijo completo y los niveles habilitados dependen de la configuración de registro del entorno de ejecución. Este formato ilustra el uso típico de la API; no se presenta como resultado de una ejecución observada.

Implementar SLF4J con Logback

Para usar SLF4J con Logback en un proyecto Maven, añade las dependencias org.slf4j:slf4j-api y ch.qos.logback:logback-classic en versiones compatibles. La segunda proporciona la implementación de Logback para la API de SLF4J. Selecciona las versiones mediante la gestión de dependencias del proyecto: las versiones de ejemplos antiguos pueden haber dejado de ser adecuadas, por lo que aquí no se presenta ningún par concreto como si fuera el más reciente.

En una clase Java, declara private static final Logger logger = LoggerFactory.getLogger(MyClass.class); y registra mensajes con llamadas como logger.info("Service started"), logger.warn("Retrying request") o logger.error("Request failed", exception). La última forma incluye una excepción para que la implementación pueda registrar su traza de pila. Si Logback está en el classpath de ejecución, el proveedor dirige las llamadas según su configuración. Por ejemplo, una configuración de consola podría mostrar INFO MyClass - Service started; es un formato representativo, no un resultado observado. El umbral, el formato y el destino reales dependen de la configuración de Logback. Al mantener las llamadas de la aplicación en SLF4J, puedes cambiar de proveedor con menos impacto en el código que usa la fachada.

Conclusión

Usa System.out.println cuando un programa pequeño solo necesite mostrar texto en la consola. Para registrar actividad en una aplicación con niveles de gravedad, configuración y destinos seleccionables, utiliza una implementación como Log4j o Logback. java.util.logging está disponible en la biblioteca estándar de Java, mientras que SLF4J ofrece una fachada que conecta el código de la aplicación con un proveedor como Logback.

Preguntas frecuentes

¿Para qué sirve el registro en Java? El registro guarda eventos que ayudan a entender qué hace una aplicación, diagnosticar problemas y supervisar su funcionamiento. Evita incluir secretos u otros datos confidenciales en los mensajes.

¿Cómo ayudan los niveles de registro? Niveles como debug, info, warn y error permiten separar los detalles de diagnóstico de los eventos importantes y los fallos. Un umbral configurado determina qué niveles se emiten.

¿Puede una aplicación usar varios frameworks de registro? Puede incluir varios sistemas de registro o puentes, pero eso añade configuración y puede duplicar la salida. Es preferible elegir una implementación principal y añadir un puente de forma deliberada cuando una dependencia use otra API de registro.

¿SLF4J es en sí mismo una implementación de registro? No. SLF4J es una fachada. Añade un proveedor compatible, como Logback, para que una implementación procese las llamadas hechas mediante la fachada.

¿Cuándo conviene elegir un framework en vez de System.out.println? Elige un framework cuando necesites filtrar por nivel, cambiar destinos o formatos mediante la configuración o administrar los registros de forma uniforme en distintos componentes. Para un programa breve o un único resultado visible, System.out.println suele ser suficiente.