sábado, 28 de enero de 2012

Logger en JAVA


Bien Señores de hace bastante queria compartir esto que es muy importante a la hora de desarrollar (sea en un ambiente de produccion o ambientes de estudio)lo que es mensajes de log en nuestra aplicacion antes de aburrirlos con teoria que es en realidad esta cuestion, esta utilidad nos beneficia para mostrar mensajes en nuestra pantalla , cuando no conocia esta herramienta lo usual que hacemos es mostrar un System.out.println(variable) para verificar que valor contenia o para mostrar si entro en algun metodo X.

Log4J nos trae la solucion a estos problemas para que lo hagamos de forma elegante y vistosa y entendible para los demas de nuestro grupo de trabajo. Ahora  leamos un poco de teoria sobre esto:

Log4j es una biblioteca open source desarrollada en Java por la Apache Software Foundation que permite a los desarrolladores de software elegir la salida y el nivel de importancia de los mensajes o “logs” (data logging) a tiempo de ejecución y no a tiempo de compilación como es comúnmente realizado.

LOG4J es una forma de liberarse de println(). Es una herramienta para centralizar y administrar los mensajes de debugging y avisos de la aplicación

La primera y una de las mayores ventajas de cualquier API de logging sobre el tradicional System.out.println es la capacidad de habilitar y deshabilitar ciertos logs, mientras otros no sufren ninguna alteración. Esto se realiza categorizando los mensajes de logs de acuerdo al criterio del programador.

Lo primero que debemos hacer con log4j en nuestro código es darle una configuración. Esta configuración sirve para que log4j sepa dónde y cómo sacar nuestros mensajes de log. Es decir, para indicarle a log4j si debe sacar dichos mensajes por pantalla, a un fichero o a otro lado y para indicarle el formato de
dichos mensajes: si debe poner la fecha y hora del mensaje, la línea de código donde se ha escrito el mensaje, el nombre de la clase, etc.

Niveles de prioridad de los mensajes

Por defecto Log4J tiene 6 niveles de prioridad para los mensajes (trace, debug, info, warn, error, fatal). Además existen otros dos niveles extras (all y off):Niveles de prioridad (De mayor -poco detalle- a menor -mucho detalle-):

OFF: este es el nivel de mínimo detalle, deshabilita todos los logs.

FATAL: se utiliza para mensajes críticos del sistema, generalmente después de
guardar el mensaje el programa abortará.

ERROR: se utiliza en mensajes de error de la aplicación que se desea guardar,
estos eventos afectan al programa pero lo dejan seguir funcionando, como por
ejemplo que algún parámetro de configuración no es correcto y se carga el
parámetro por defecto.

WARN: se utiliza para mensajes de alerta sobre eventos que se desea mantener
constancia, pero que no afectan al correcto funcionamiento del programa.

INFO: se utiliza para mensajes similares al modo "verbose" en otras aplicaciones.

DEBUG: se utiliza para escribir mensajes de depuración. Este nivel no debe estar
activado cuando la aplicación se encuentre en producción.

TRACE: se utiliza para mostrar mensajes con un mayor nivel de detalle que debug.

ALL: este es el nivel de máximo detalle, habilita todos los logs (en general equivale a TRACE).

Appenders
En Log4J los mensajes son enviados a una (o varias) salida de destino, lo que se
denomina un appender.Existen varios appenders disponibles y configurados, aunque también podemos
crear y configurar nuestros propios appenders.Típicamente la salida de los mensajes es redirigida a un fichero de texto .log (FileAppender, RollingFileAppender), a un servidor remoto donde almacenar
registros (SocketAppender), a una dirección de correo electrónico (SMTPAppender),
e incluso en una base de datos (JDBCAppender).

Casi nunca es utilizado en un entorno de producción la salida a la consola (ConsoleAppender) ya que perdería gran parte de la utilidad de Log4J.

Layouts
Es el responsable de dar un formato de presentación a los mensajes.Permite presentar el mensaje con el formato necesario para almacenarlo simplemente en un archivo de texto .log (SimpleLayout y PatternLayout), en una tabla HTML (HTMLLayout), o en un archivo XML (XMLLayout).
Además podemos añadir información extra al mensaje, como la fecha en que se generó, la clase que lo generó, el nivel que posee... por cada paso.

Ahora si el Ejemplo: el proyecto esta hecho en Netbeans pero perferctamente lo pueden hacer en Eclipse u otro IDE para JAVA.

Primer paso para usar Log4J es configurar un properties que estara en la raiz de nuestro proyecto con esta configuracion.Esta configuracion puede variar dependiendo de nuestas necesidades lean los comentarios.

Luego de hacer esto tenemos que exportar a nuestras librerias del proyecto el Jar de Log4J va junto al proyecto a descargar pero si ustedes lo quieren descagar esta es la url.

El ejemplo trata de una logica de entrada proceso y salida de datos , tenemos que hacer una clase java que se llame Entrada.

En todas las clases que querramos usar logger tenemos que declarar una variable privada estatica del tipo Logger. que le indiquemos que clase es que va a mostrar en el log. luego en cada metodo donde creamos conveniente con la variable descrita arriba podemos mostrar mensajes de informacion bueno los descritos anteriormente.

Ahora vamos con la clase de Proceso esta clase simula un login y que deberia de ocurrir mostrando mensajes de log.


Y la clase de salida es esta:


Aca solo declaramos un constructor con un parametro booleano para que verifique si hubo un error en el login y muestre un mensaje de error en consola.

Ahora veamos que pasa si ejecutamos el Main.

Vemos como nos muestra la fecha detalles que configuramos en el propertie y de que clase salio el mensaje el tipo de mensaje y lo que contiene el mensaje.

Algunos se preguntaran para que me sirve esto si en consola vere el mensaje, pues cuando tu ejecutas cualquier aplicacion java tenes la opcion de ver la consola, ahi veras los errores que le interesan al desarrollador en su interfaz grafica debera mostrar mensajes entendibles para el usuario por ejemplo, tienes un metodo en una clase X cuando el usuario desde la GUI hace uso del metodo si pasa un error tu no le mostrarar Null Pointer Exception por ejemplo, ese error nos interesa a nosotros el usuario vera por ejemplo su peticion no ha sido procesada cosas por el estilo , por eso usamos logger en nuestras aplicaciones para dar mas rapido con el error para guiarnos por donde va la aplicacion esto es valido para cualquier aplicacion java sea web escritorio.

Descargar

Espero que les sirva de mucho y dejen un comentario si algo no quedo claro.

martes, 24 de enero de 2012

Programacion Orientada a Objetos Java Libro

Bueno señores despues de un tiempo de descanzo volvemos a nuestros vaciles, hoy les traigo un manual excelente de lo que es la POO en java (que es el lenguaje que mas me gusta y se que es 100% Orientado a objetos).

EL manual son aproximadamente 12 capitulos con ejemplos y bastante teoria aplicada en java sobre como podemos usar la POO a nuestro beneficio.

Tambien trae una guia de recordatorio para que nos acordemos de algunas ondas basicas en java y otras que no sabiamos, el manual es muy bueno para los que ya han usado java orientado a objetos y tambien para los que van iniciando en este universo.

Mas adelante espero postear partes importantes y fundamentales y algunos tips que debemos aprender espero que les sea de mucha ayuda.

descargar