16:58

Como Usar Log4j en Netbeans 6.7 ( Salida a un Archivo )



Pasos:

Para configurar Log4J en Netbeans

Crear el archivo de Configuración

Decirle a Log4J que archivo tiene que usar




1) Como hago el archivo de configuración?

Para enviar la salida del Log4j a un archivo vamos a utilizar un archivo .properties

En Netbeans apretamos el botón derecho del mouse sobre el paquete de nuestras clases seleccionamos New -> Other vamos a la carpeta Other y allí elegimos "Properties File" presionamos siguiente y modificamos el nombre para que quede Log4j y presionamos el botón finish.

Netbeans nos abre automaticamente el archivo Log4j.properties, dentro de este archivo colocamos:


# Definimos granularidad (DEBUG) y el nombre del Logger= Archivo
log4j.rootCategory= DEBUG, Archivo

#Configuramos el tipo de Appender: FileAppender ,RollingFileAppender, DailyRollingFileAppender
log4j.appender.Archivo=org.apache.log4j.FileAppender
#Configuramos el archivo donde queremos que se almacene el log
log4j.appender.Archivo.File=C:\\aplicacion.log
#Configuramos un Layout
log4j.appender.Archivo.layout=org.apache.log4j.PatternLayout
#Modificamos el tipo de salida
#%d (fecha) - %t (metodo) - %p (prioridad) - %c{4} (clase)
# %m (mensaje) - %n ("\n")
log4j.appender.Archivo.layout.ConversionPattern=%d %t %p [%c{4}] %m%n


Guardamos los cambios y con eso ya tenemos el archivo de configuración de Log4j que vamos a utilizar



2) Como le digo a mi aplicación que use ese archivo de Configuración?

Creamos un método estático que va a ser llamado desde el main() de la aplicación

Primero obtenemos la url del archivo de configuración, como están en el mismo paquete que la clase Main lo podemos obtener con el método getResource().

URL url = Main.class.getResource("Log4j.properties");

Despúes cargamos el archivo de configuración

PropertyConfigurator.configure(url);

Aca les dejo el metodo listo para copiar:

public static void log4jArchivo(){

URL url = Main.class.getResource("Log4j.properties");
PropertyConfigurator.configure(url);

logger.info("Entrando a la Aplicacion");
System.out.println("Mensaje por Consola");
logger.info("Saliendo de la Aplicacion");
}


Y eso es todo. Aca les dejo una clase para que prueben:


import java.net.URL;
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.PropertyConfigurator;


public class Main {
static Logger logger = Logger.getLogger(Main.class);


public static void main(String[] args) {

Main.log4jArchivo();
}

public static void log4jArchivo(){
URL url = Main.class.getResource("Log4j.properties");
PropertyConfigurator.configure(url);

logger.info("Entrando a la Aplicacion");
System.out.println("Mensaje por Consola");
logger.info("Saliendo de la Aplicacion");
}

}


Esta forma de log es la mas utilizada. Espero que les sea útil

2 comentarios:

Paula dijo...

hola!
Me gusto la simplicidad de tu explicación ya que no hay muchas paginas comprensibles del tema...
Me surgio el siguiente error:
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: C:\aplicacion.log (Acceso denegado)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.(FileOutputStream.java:177)
at java.io.FileOutputStream.(FileOutputStream.java:102)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:289)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:163)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:256)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:132)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:96)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:654)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:612)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:509)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:415)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:441)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:470)
at org.apache.log4j.LogManager.(LogManager.java:122)
at org.apache.log4j.Logger.getLogger(Logger.java:117)
at Clases.Main.(Main.java:17)
Exception in thread "main" java.lang.NullPointerException
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:433)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:336)
at Clases.Main.log4jArchivo(Main.java:26)
at Clases.Main.main(Main.java:21)
Java Result: 1
GENERACIÓN CORRECTA (tiempo total: 2 segundos)

Si pudieras decirme que es te lo agradecería.
Saludos!!

Paula

Sr José Silva dijo...

Paula, cambia C:\aplicacion.log, por una direccion con acceso de lectura y escritura, como lo es Mis documentos o una carpeta dentro del mismo!

Publicar un comentario