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

martes, agosto 16, 2011

Creando una aplicacion con JSF RichFaces parte III

En esta ocacion haremos la integracion de nuestro proyecto con el framework de spring, que nos ayudara a hacer inyeccion de dependencias he integrar funcionalidades me una manera mas facil y transparente.

En la anterior entrada olvide comentar 2 puntos, donde poner el log4j y como invocarlo
     

     log4jConfigLocation     /WEB-INF/log4j.xml

     
          org.springframework.web.util.Log4jConfigListener
     


Ahora si para agregar spring a nuestro proyecto: 

1.- Agregando las librerias
/**
* En mi Caso utilizo las varsiones 3.0.5 de estos jar
* org.springframework.asm.jar
* org.springframework.beans.jar
* org.springframework.context.jar
* org.springframework.core.jar
* org.springframework.expression.jar
* org.springframework.web.jar
*/
2.- Creando el application-context.xml






3.- Modificando el web.xml


     contextConfigLocation               /WEB-INF/applicationContext-faces.xml
     
	


     
          org.springframework.web.context.ContextLoaderListener
     


     
          org.springframework.web.util.IntrospectorCleanupListener
     


     
          org.springframework.web.context.request.RequestContextListener
     


4.- Modificando el faces-config.xml







     org.springframework.web.jsf.DelegatingVariableResolver


5.- Creando los bean
/**
* lo hare estilo struts, un form que llamo bean y un action que llamo "cont"
* el bean lo coloco en com.tutorial.rich.faces.bean
* el contenedor lo coloco en com.tutorial.rich.faces.content
*/

public class Login {
private String usuario;
private String password;

public String getUsuario() {
	return usuario;
}
public void setUsuario(String usuario) {
	this.usuario = usuario;
}
public String getPassword() {
	return password;
}
public void setPassword(String password) {
	this.password = password;
}
}

/**
* agrego una llamada a mi log4j
*/
public class LoginCont {
	private static Logger log = Logger.getLogger(LoginCont.class);
	
private Login loginBean;

public Login getLoginBean() {
	return loginBean;
}
public void setLoginBean(Login loginBean) {
	this.loginBean = loginBean;
}

public String cmdLogin(){
	if(getLoginBean().getUsuario().equals("") 
|| getLoginBean().getPassword().equals("")){
		log.info("usuario invalido");
	}else{
		log.info("usuario valido");		
	}
	return null;
}
}
6.- Invocando al bean desde el jsp

  
    



















NOTAS, HASTA AQUI TENEMOS CONFIGURADO SPRING Y UN EJEMPLO DE COMO ACCESAREMOS A LOS BEANS,
PERO AUN NO EXPLICO EL FUNCIONAMIENTO DE JSF, LO HARE AL MOMENTO QUE TENGAMOS HIBERNATE INTEGRADO CON NUESTRO PROYECTO..., RECUERDA SI TIENES DUDAS U OBSERVACIONES AGRADECERE TUS COMENTARIOS

miércoles, agosto 10, 2011

Creando una aplicacion con JSF RichFaces parte II

Hola que tal, despues de una larga ausencia regreso con este tutorial de richfaces, espero no ausentarme tanto otra ves :P.

En la entrada anterior vimos como dejar nuestra aplicacion lista para utilizar este framework, en esta ocacion agregaremos la internacionalizacion y dejaremos habilitado nuestro log4j.

1.- Crearemos el paquete donde estaran nuestros resources y creando los resources
/*
     * El paquete lo llamare com.tutorial.rich.resources
     * crearemos dos resources los cuales llamaremos
     * ApplicationResources_en_EN.properties y
     * ApplicationResources_es_MX.properties respectivamente
     * ApplicationResources_ es el nombre generico que les damos 
     * a nuestros resources, por lo cual le podemos dar cualquier nombre
     * es_MX o en_EN son los codigos de lenguaje y pais
     * si quieres saber mas de esto busca informacion sobre la clase Locale de java
     */

     /* La informacion contenida en ApplicationResources_en_EN.properties
     *
     * login_lblTituloPag=Login
     * login_lblUsuario=User
     * login_lblPassword=Password
     */

     /* La informacion contenida en ApplicationResources_es_MX.properties
     *
     * login_lblTituloPag=Login
     * login_lblUsuario=Usuario
     * login_lblPassword=Contraseña
     */

     /*
     * ¿ Por que no usuamos los timpicos login.lbl.titulo.pag 
     * y utilizamos login_lblTituloPag ?
     * por que a diferencia de Strust por ejemplo, jsf reconoce el punto
     * como si intentaramos acceder a un elemento de un objeto
     * por lo tanto utilizamos el guion bajo, "para este ejemplo"
     * no es una norma
     */

2.- Modificando el faces-config



    


     
          com.tutorial.rich.resources.ApplicationResources
          msgs
     
     
          en_EN
     








3.- Agregando un JSP con etiquetas, que cambiaran dependiendo del idioma
/*
     * En el jsp que se creo por default, (index) agregaremos en la parte superior 
     * las siguientes taglibs
     */

     <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
     <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
     <%@taglib prefix="rich" uri="http://richfaces.org/rich" %>

     /*
     * En el body del jsp agregaremos lo siguiente
     */
     
          
               
                    
                         						
                    
                    

/* * no explicare el porque de cada etiqueta, hasta la siguiente entrada * pero observen que para acceder a los mensajes utilizo por ejemplo * * en value hago el llamado a la etiqueta msgs que declaramos en el faces-config * luego solo hago referencia a la etiqueta del resource que deseo utilizar */
4.- Configurando web.xml

     
     
     
          faces/index.jsp
     


5.- Probando la aplicacion
/*
      * para probar solo es mover el codigo en el faces-config  de
      * en_EN a
      * es_MX
      */
6.- Configurando log4j
     
     
     


 

	
								
					
	
	
				
					
	

	
		
		
		
	

lunes, marzo 28, 2011

configurando log4j para una aplicacion stand alone

Esta ocacion, abordare de forma rapida como poder configurar log4j en nuestros proyectos stand alone.

algunas ocaciones queremos tener un registro de algunos acontesimientos que pasan con nuestra aplicacion, por ejemplo tener un documento donde guardar la hora en que ocurrio algo inersperado en el sistema, una exception, o alguna accion.

una forma muy sensilla es utilizar esta libreria para lograr nuestro cometido, por lo cual necesitamos tener lo siguiente:

1.- descargar la libreria de log4j en -> http://logging.apache.org/log4j/1.2/download.html

ahora en tu proyecto crea una carpeta a la altura de src, que puedes llamar lib (por estandar), agregar la libreria que descargaste

hecho esto ve a las propiedades de tu proyecto, y agrega la libreria (esto es necesario solo para aplicaciones stand alone, y se hace por defecto para aplicaciones web)

lo que pasa a continuacion, es que cuando ejecutes tu aplicacion, te diria antes de hacer cualquier cosa, que configures tu log4j

bueno, ahora configuremoslo:

crea un archivo .xml y llamalo digamos logsAplicacion :)

TODO LOS CODIGOS LLEVAN SU MAYOR Q Y MENOR Q, SOLO Q ME LOS QUITA ¬¬

1.- cuando creas un xml por defecto se pone :
?xml version="1.0" encoding="UTF-8"?
pero bueno si no ya sabes q hacer.

2.- agrega la siguiente linea de codigo para que tu aplicacion sepa q se trata de un documento de configuracion para el log
!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"

ahora todo el codigo que veremos a continuacion va entre un bloque xml

log4j:configuration debug="true"

/ log4j:configuration

tenemos 2 configuraciones basicas, que crees un archivo y guardes todos tus acontecimientos o que imprimas en consola todos tus acontecimientos, veamos la primer forma

3.- tenemos que crear un bloque appender, dentro del cual configuraremos nuestras politicas para crear el archivo de log, le brindamos tambien un nombre para poder utilizarlo despues
appender name="log_en_archivo" class="org.apache.log4j.RollingFileAppender"

/ appender


4.- dentro de este bloque, definimos el tamaño maximo de nuestro archivo:
param name="maxFileSize" value="100MB" /

5.- definamos la ruta y nombre de nuestro archivo
param name="file" value="c://logs/archivo_log.log" /

6.- definamos el layout que utilizaremos para escribir la informacion en el archivo
layout class="org.apache.log4j.PatternLayout"

param name="ConversionPattern" value="%d{ISO8601} %5p %c{1}:%M - %m%n"/

/ layout
no abundare mucho en esta parte, pero para mas informacion, busca el apli de log4j, la clase patternLayout

7.- bueno hemos terminado con el bloque appender, ahora tenemos que llamarlo, es algo asi como si de un metodo llamaramos a otro
root

priority value="info" /

appender-ref ref="
log_en_archivo"/

/root


si queremos que la informacion se pinte en consola solo hay que modificar un poco lo que ya tenemos

1.-
la clase que ocupa nuestro appender cambiaria, ya no seria RollingFileAppender, seria ConsoleAppender lo que nos llevaria a algo como:

appender name="log_en_consola" class="org.apache.log4j.ConsoleAppender"

2.-
los parametros de tamaño de archivo y archivo los sustituimos por:

param name="Target" value="System.out"/

esto hara que el log se pinte en consola

3.- y para llamarlo, en el bloque root llama al nuevo appender
si quieres llamar a los 2 solo agrega los 2 llamados a los appender, asi lo puedes realizar n veces

NOTA: si ves el bloque root tengo una etiqueta llamada priority, es por que los log se manejan por prioridad, en este caso tengo info, pero hay mas como debug, pero la neta no recuerdo los otros, como sea en el api de log4j lo encuentras :) si no me mandas un comment

LLAMANDO A NUESTRO ARCHIVO DE CONFIGURACION

ya tenemos nuestro archivo de configuracion, si lo hubieramos nombrado log4j.xml hay hubieramos terminado todo, ya que al cargar la libreria, al ejecutar el proy se busca el archivo de configuracion con ese nombre. pero pues q chiste, por eso lo hemos nombrado
logsAplicacion.xml

para
poder invocar el archivo en tu clase principal, antes de q comienzes a codificar, llamemos a nuestro log. Dentro de nuestra clase main hacemos lo siguiente

1.- DOMConfigurator.configure(Loader.getResource("
logsAplicacion.xml"));
no indicamos ruta, pues se supone que este archivo se encuentra a dentro de la carpeta src

SOLO NOS FALTA PODER UTILIZAR NUESTRO ARCHIVO DE CONFIGURACION

ya tenemos nuestro archivo, y ya esta cargado, falta utilizarlo en las clases que deceemos

1.- supongamos q tenemos una clase llamada Pruebas.java

2.- dentro de la clase, y como una variable global declaramos a nuestro loguer, haciendo llamado a la clase que queremos loguear
private static Logger log = Logger.getLogger( Prueba.class );


y por ejemplo en ves de poner System.out.println("Entrando al sistema");
System.out.println("Operacion Realizada");

bastara poner log.info("Entrando al sistema");
log.("Operacion realizada");

en el caso de las excepciones como

try{ }
catch(SQLException e) {
System.out.println("Error en la consulta");
}

pondriamos


try{ }
catch(SQLException e) {
log.error("Error en la consulta", e);
}

asi tanto en archivo como consola se imprimira todo lo que deceemos, para poder asi tener un control de nuestras acciones


como pueden ver en realidad no es mucho trabajo, por algo muy presiado como son los logs, que nos pueden sacar de grandes aprietos, sin necesidar de tener que debuguear una aplicacion para saber donde ocurrio un error o algo por el estilo

espero que sea de su agrado.