
Este tutorial de Log4j está diseñado tanto para iniciarse como para profesionales. Log4j es un framework de logging rápido, confiable y flexible escrito en Java.
Los sistemas de logging lo que hacen es registrar el estado de un sistema en tiempo de ejecución. Los logs son usados para capturar y persistir datos importantes y hacerlos disponibles para su análisis.
Ventajas del logging
- Rápida depuración
- Diagnóstico de problemas
- Fácil mantenimiento
- Ahorro de coste y tiempo
Características de Log4j
- Es thread-safe, seguro en el manejo de hilos.
- Optimizado para ser rápido.
- Está basado en una jerarquía de niveles de log.
- Soporta la internacionalización.
- Soporta múltiples salidas de appenders por logger.
- No está restringido a un conjunto predefinido de instalaciones.
- El formato de salida del log puede ser fácilmente modificado extendiendo la clase Layout.
- Diseñado para gestionar excepciones Java.
- El comportamiento del logging puede establecerse en tiempo de ejecución usando un fichero de configuración.
Arquitectura de Log4j
Log4j follows a layered architecture where each layer is used to provide different objects to perform different tasks. This layered architecture makes the design easy and flexible to extend in the future.
There are two types of objects available in the log4j framework:
Log4j tiene una arquitectura en capas, cada capa se usa para proveer distintos objetos para ejecutar distintas tareas. Este modelo en capas hace que sea un diseño fácil y flexible de extender en un futuro.
Hay dos tipos de objetos disponibles en el framework de log4j: objetos core y objetos de apoyo.
Objetos Core
Son objetos obligatorios del framework. Todos los objetos core son necesarios para usar el framework.
Logger: Este objeto es el responsable de recoger la información de logging, se almacenan en la jerarquía del espacio de nombres. Métodos de la clase Logger encargados de escribir el estado de la aplicación: debug(), info(), warn(), error() y fatal().
Appender: Componente de la capa baja. Es responsable de publicar la información de logging en distintos destinos: bases de datos (JDBCAppender), ficheros (FileAppender), consola (ConsoleAppender), remoto (SocketAppender), correo (SMTPAppender), etc. Pero a diferencia de Logger se trata de una interfaz, no una clase.
Layout: Estos objetos se usan para formatear la salida del log con diferentes estilos. Por ejemplo tenemos SimpleLayout, PatternLayout, HTMLLayout y XMLLayout.
Objetos de apoyo
Son objetos opcionales del framework.
Level: Define la prioridad y granularidad de la información de los logs. Hay siete niveles definidos por defecto: OFF, DEBUG, INFO, ERROR, WARN, FATAL y ALL.
Filter: Toma decisiones adicionales acerca de si la información capturada debe incluirse en el log o no.
ObjectRenderer: Este objecto está especializado en proveer una representación como String de distintos objetos pasados al framework de logging.
LogManager: Se usa para gestionar el framework de logging. Lee los parámetros de la configuración inicial de un fichero de configuración o una clase de configuración.
Ejemplo de uso
Código Java:
import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class Ejemplo {
static Logger log = Logger.getLogger(Ejemplo.class.getName());
public static void main(String[] args)throws IOException,SQLException{
log.debug("Este es un mensaje a nivel de debug");
log.info("Este es un mensaje a nivel de info");
}
}
Fichero log4j.properties
# logger raiz
log = /usr/home/log4j
log4j.rootLogger = DEBUG, FILE
# file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out
# definicion del layout
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
Dependencia maven:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
| Asunto | Descripción |
| Tutorial básico y sintaxis | Tutorial básico Java y sintaxis. Aprende los fundamentos del lenguaje. |
| Hilos (Threads) | Aprende a manejar hilos y las cuestiones básicas de la concurrencia |
| Funciones Lambda | Aquí te enseñamos las nociones más importantes para arrancas con funciones lambda |
| Palíndromos | Programa de ejemplo para el uso de palíndromos en Java. |
| Máquina Virtual de Java | Te explicamos el funcionamiento de la máquina virtual de java (Java Virtual Machine – JVM) |
| JDK, JRE y JVM | Diferencias entre el JDK, JRE y JVM. |
| Mejores libros Java en Español | Hazte con los mejores libros Java para aprender paso a paso y profundizar en las mejores prácticas |
| TensorFlow | Manejo del API de TensorFlow para la construcción de grafos de operaciones y su ejecución |
| Tutorial Log4j | Tutorial para el manejo de Log4j, herramienta ágil y flexible para la gestión de Logs en Java |
| Java Security | Entiende y aplica las posibilidades que da Java para mantener la seguridad |
| Tutorial JConsole | Aprende los conceptos básicos de monitorización de procesos Java con JConsole |
| JavaFX | Tutorial de JavaFX, librería gráfica moderna para construcción de GUIs en móvil, escritorio y web. |
| Estructuras de datos en Java | Explicación y ejemplos de las estructuras de datos más importantes: listas, pila, cola, arbol. |
| Javaapi | Conjunto de clases, interfaces, métodos y paquetes que forman parte de la plataforma Java estándar |
| Algoritmo Huffman | Método eficiente para codificar datos, asignando códigos más cortos a los caracteres más frecuentes |