====== Utilizar LogAtica en las Aplicaciones ====== LogAtica esta compuesta por: * Un sistema que permite enviar log a BBDD de forma asíncrona, enviando mensajes a una cola JMS. Esta cola JMS es procesada por la propia aplicación de LogAtica, guardando los datos en la BBDD. * Una [[https://logatica.um.es/logatica/|aplicación]] que permite explotar el log almacenado en la BBDD. Los datos que se pueden obtener de LogAtica son: * Información sobre la sesión del usuario: cuando se conecto y cuando se cerro la sesión. * User Agent: Ver desde que dispositivo se conecto, la versión del navegador y del sistema operativo. * Los login y logouts asociados a una sesión. * Las paginas accedidas en una sesión. * El log asociado a una página. La aplicación la estamos migrando actualmente a FundeWeb 2, por lo que no estará disponible hasta al menos hasta el **31 de Julio**. ===== Configurar la Aplicación ===== Para utilizar la nueva versión de //LogAtica// en nuestras aplicaciones, solo hay que seguir los siguientes pasos: == FundeWeb 2.0 == * Abrir el fichero POM principal del proyecto y cambiar la versión del //// a 2.0.11 (si es superior no modificar, si es inferior, añadir en la etiqueta //// la propiedad siguiente //ISO-8859-1project.build.sourceEncoding>//). (No necesario si se a creado con el arquetipo 0.0.6 o posterior). * Abrir el fichero POM del módulo WEB y añadir la siguiente dependencia, justo después de la dependencia de //fundeweb-jpa// (No necesario si se a creado con el arquetipo 0.0.6 o posterior): es.um.atica.fundeweb fundeweb-log4j == FundeWeb 1.5 == * Abrir el fichero POM principal del proyecto y cambiar la versión del //// al menos a la versión 1.5.19. * Abrir el fichero POM del módulo EJB y añadir la siguiente dependencia, justo después de la dependencia de //fundeweb-jpa//: org.um.atica.fundeweb-legacy fundeweb-log4j * Abrir el fichero POM del módulo WEB y añadir la siguiente dependencia, justo después de la dependencia de //fundeweb-casclient//: org.um.atica.fundeweb-legacy fundeweb-log4j provided Continuamos para toda versión de FundeWeb. * Editar el fichero //log4j.xml// que esta en la carpeta //src/main/resources// del módulo WEB y añadimos la etiqueta //// justo después de la etiqueta raíz ////: * En el fichero //log4j.xml//, buscamos el //appender// con nombre //fichero// y le añadimos después del cierre de la etiqueta ////, la etiqueta ////: ... ... * En el fichero //components.xml//, añadimos el espacio de nombres para JMS sino esta definido y la localización del XSD en la propiedad //xsi:schemaLocation//. == FundeWeb 2.0 == ... == FundeWeb 1.5 == ... Continuamos para todas las versiones de FundeWeb. * Añadimos antes del cierre de la etiqueta //// lo siguiente: ... 1 * En la propiedad //applicationId// hay que poner el código de la aplicación en //LogAtica//. * Para que una evento sea enviado a //LogAtica//, solo tenemos que utilizar la clase **//LogAticaMessage//**, pasando el mensaje y los parámetros a sustituir. El siguiente ejemplo muestra como mandar el mensaje de log a //LogAtica// y que ademas se añada al resto de //appenders//. package action.session; import org.jboss.seam.annotations.Logger; import org.jboss.seam.annotations.Name; import org.jboss.seam.log.Log; import es.um.atica.logatica.messages.LogAticaMessage; @Name( "pruebaBean" ) public class PruebaBean { @Logger private Log log; public String lanzaPrueba() { log.info( LogAticaMessage.newInstance("Prueba de Logatica: #0 - #1", "Prueba", true)); return null; } public String lanzaPruebaError() { try { // codigo con error } catch (Exception ex) { log.error( LogAticaMessage.newInstance("Prueba de Logatica: #0 - #1", "Prueba", true), ex); } return null; } } * Para mandar el mensaje de log a //LogAtica// y que no se añada al resto de //appenders//, solo tenemos que poner un valor //false// como primer parámetro del constructor de //LogAticaMessage//. Veamos unos ejemplos: package action.session; import org.jboss.seam.annotations.Logger; import org.jboss.seam.annotations.Name; import org.jboss.seam.log.Log; import es.um.atica.logatica.messages.LogAticaMessage; @Name( "pruebaBean" ) public class PruebaBean { @Logger private Log log; public String lanzaPrueba() { log.info( LogAticaMessage.newInstance(false, "Prueba de Logatica: #0 - #1", "Prueba", true)); return null; } public String lanzaPruebaError() { try { // codigo con error } catch (Exception ex) { log.error( LogAticaMessage.newInstance(false, "Prueba de Logatica: #0 - #1", "Prueba", true), ex); } return null; } } ---- --- //[[juanmiguelbg@um.es|JUAN MIGUEL BERNAL GONZALEZ]] 2015/07/08 11:42//