analytics

Mostrando entradas con la etiqueta PropertyConfigurator. Mostrar todas las entradas
Mostrando entradas con la etiqueta PropertyConfigurator. Mostrar todas las entradas

jueves, 29 de diciembre de 2016

Java Log con Log4j

Utilizar Log4j es muy fácil



Log4j es una librería Java que nos facilita mucho el uso de ficheros de Log. Un fichero de log nos permite depurar y mantener la aplicación. Simplemente es un fichero donde se irán añadiendo cadenas de texto conforme nuestro programa se ejecute. De esta manera, cuando no tengamos otro sistema de debug disponible (por ejemplo, en tiempo de ejecución), podremos saber qué ocurre con nuestra aplicación.



Código


import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;


public class TestLogger{

   public static void main(String[] args) {  
        try {           

            // carga fichero de configuracion de log
            PropertyConfigurator.configure(TestLogger.class.getResourceAsStream("log4j.properties")); 
            Logger logger = LogManager.getLogger(TestLogger.class);
            logger.error("error de prueba");     
            
        } catch (IOException ex) {            
         ex.printStackTrace();
        }
  
   }
}
 

Donde "log4j.properties" es el fichero de configuración del Logger. (no es obligatorio, pero si no lo añadimos, nos utilizará la configuración por defecto, la cual es mostrar los mensajes de log por consola). 
La sentencia "logger.error("error de prueba")", es un ejemplo de inserción de mensajes de log.

** Nota: en este ejemplo, estoy utilizando la versión de la librería log4j-1.2.17.jar, la cual, simplemente, añadiremos a nuestro proyecto.


Fichero de configuración de log4j


El contenido de "log4j.properties" es el siguiente

# Root logger option
log4j.rootLogger=DEBUG, file, stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\LOGS\\outLog.txt
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n


Donde le indicamos que el nivel más bajo de LOG que queremos mostrar es el nivel DEBUG. Esto significa que todo lo que ocurra en el programa cuya importancia sea mayor o igual al nivel DEBUG, se añadirá al log, y lo que tenga menor importancia no se añadirá.


Estos son los niveles de prioridad: (cuanto más alto, mayor prioridad o gravedad)
  • OFF
  • FATAL
  • ERROR
  • WARN
  • INFO
  • DEBUG
  • TRACE
  • ALL

También le especificamos que el log nos lo muestre tanto por consola (stdout) como en un fichero de log (file).

Por último, detallamos algunas opciones como la ruta del fichero de log de output y el tamaño máximo del fichero de log, para que no crezca indefinidamente.


log4j.appender.file.File=C:\\LOGS\\outLog.txt
log4j.appender.file.MaxFileSize=10MB

En resumen, una manera muy simple de tener un log en nuestras aplicaciones y saber qué ocurre en tiempo de ejecución.