Objetivos

Añadiremos un sistema de Loggin a nuestra aplicacion.
1. Introducción
Log4j es una librería adicional de java que permite a nuestra aplicación mostrar mensajes de información de lo que está sucediendo en ella, lo que habitualmente se conoce como un log. Tiene la ventaja de ser dinámico y, por tanto, configurable.
2. Configuración
Una de las ventajas de Log4j es que es configurable a través de un fichero, bien un properties o un xml.
En nuestro caso lo colocaremos en la carpeta de Resources.
3. Niveles de Log o Traza
- trace() El menos importante, que se suele usar en la fase de desarrollo. Es el típico System.out.println(“paso por aquí”).
- debug() Información útil para depurar. Algún resultado parcial, el valor de alguna variable, etc.
- info() Información sobre la aplicación que pueden tener cierto interés para ser mostrados en el log. Se establece una conexión con base de datos, se conecta un cliente a nuestro servidor, un usuario entra en sesión, se guarda la sesión en base de datos, etc.
- warn() Advertencias o fallos sin importancia para la ejecución del programa. Un usuario introduce una contraseña errónea, un fichero de configuración no existe y la aplicación coge la configuración por defecto que se establezca en el código, etc.
- error() Errores importantes, pero que no obligan a terminar la aplicación. No se puede conectar a la base de datos pero hay ciertas funcionalidades que sí pueden seguir ofreciéndose, aun sin base de datos.
- fatal() Errores que obligan a terminar la aplicación. Se acaba la memoria disponible.
4. Fichero de configuración
Es lo más importante, porque un sistema muy cargado de Logs "no sirve de nada", cuidado con esta afirmación, hay ahora mismo procesos en Big Data que darían mucho juego.
El caso es que estamos haciendo trabajar a la máquina (no deja de ser una escritua en disco, lo más costoso a no ser que hablemos de SSD), por lo tanto debemos se cautelosos con este tema.
Un fichero básico podría ser:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> </layout> </appender> <!-- specify the logging level for loggers from other libraries --> <logger name="com.opensymphony"> <level value="DEBUG" /> </logger> <logger name="org.apache.struts2"> <level value="DEBUG" /> </logger> <logger name="com.mr.knight.struts2"> <level value="DEBUG" /> </logger> <!-- for all other loggers log only info and above log messages --> <root> <priority value="INFO"/> <appender-ref ref="STDOUT" /> </root> </log4j:configuration> |
LoginAction.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import org.apache.log4j.Logger; .... public class LoginAction { final static Logger logger = Logger.getLogger(LoginAction.class); ..... public String execute() throws Exception { logger.debug("Execute"); if ("jose".equals(getName()) && "admin".equals(getPwd())) { logger.debug("Success"); return "SUCCESS"; } else { logger.debug("Error validating"); return "INPUT"; } } |
6. Resultado
1 2 3 4 5 6 7 8 | jun 18, 2017 10:47:42 AM org.apache.catalina.startup.Catalina start INFORMACIÓN: Server startup in 2184 ms 2017-06-18 10:48:03,746 DEBUG com.mr.knight.struts2.action.LoginAction.execute:26 - Execute 2017-06-18 10:48:03,749 DEBUG com.mr.knight.struts2.action.LoginAction.execute:31 - Error validating 2017-06-18 10:48:05,698 DEBUG com.mr.knight.struts2.action.LoginAction.execute:26 - Execute 2017-06-18 10:48:05,699 DEBUG com.mr.knight.struts2.action.LoginAction.execute:31 - Error validating 2017-06-18 10:48:21,467 DEBUG com.mr.knight.struts2.action.LoginAction.execute:26 - Execute 2017-06-18 10:48:21,468 DEBUG com.mr.knight.struts2.action.LoginAction.execute:28 - Success |
Quedaría pendiente, el migrarlo a log4j2
Recuerda, tienes que hacer commit ;)
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.