SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Diego Armando Gomez Mosquera
logs
Introducción
• El Log es un mensaje que le indica al
desarrollador la ocurrencia de un evento que
desea monitorear dentro de la aplicación.
• Típicamente usamos salidas estándar en consola.
– System.out.println(“”);
– Console.WriteLine(“”);
Introducción
• Nuestras aplicaciones quedan con mensajes
de todo tipo dentro del código, mensajes que
en la salida a producción de los productos en
algunos casos deben ser borrados.
• El código desplegado en el servidor no habla?
• En el servidor no existe forma de depurar paso
a paso?
Porque no seguir usando salidas
estándar a consola?
• Consume recursos en el sistema operativo ya que las
llamadas a System.out.println se agregan a un
archivo Log que controla el servidor de aplicaciones.
• Es difícil encontrar un error dentro de toda la
aplicación.
• En tiempo de ejecución al utilizar System.out.println
no es posible configurar el nivel de granularidad de
los mensajes.
Porque no seguir usando salidas
estándar a consola?
• No se pueden deshabilitar los mensajes, ya
que están en código duro.
• El manejo y control de mensajes en tiempo de
ejecución es nulo.
• No es posible enviar los mensajes a otros
sistemas diferentes de la consola ejemplo
JMS, JDBC, SMTP, entre otros.
Implementaciones para el manejo de
mensajes de Log.
• Log4J
– http://logging.apache.org/log4j
• LOGBack
– http://logback.qos.ch/
• slf4j
– http://www.slf4j.org/
• JavaTM Logging APIs
– http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/
Log4J
• Primera versión creada en 1996 por Ceki
Gülcü, Michael Steiner para el proyecto
SEMPER.
• En el momento existen las siguientes
versiones de log4J.
– 1.2
– 2.0
Log4J
• Es uno de los framework mas populares
del mundo Java para el manejo de logs.
• El proyecto creció tanto que hoy en día
existen implementaciones para
diferentes lenguajes de programación
como: C, C++, C#, Perl, Python, Ruby y
Eiffel.
Log4J componentes básicos.
• Maneja tres componentes básicos.
– Nivel de prioridad de traza.
– Appenders.
– Layouts.
– Configuración.
Log4J Nivel de prioridad de traza.
• DEBUG
• INFO
• WARN
• ERROR
• FATAL
• ALL
• OFF
 Nivel básico
 Nivel extra
Log4J Nivel de prioridad de traza.
• DEBUG
– Se utiliza para escribir mensajes de depuración,
este log no debe estar activado cuando la
aplicación se encuentre en producción.
Log4J Nivel de prioridad de traza.
• INFO
– Se utiliza para mensajes similares al modo
"verbose" en otras aplicaciones.
Log4J Nivel de prioridad de traza.
• WARN
– Se utiliza para mensajes de alerta sobre eventos
que se desea mantener constancia, pero que no
afectan el correcto funcionamiento del programa.
Log4J Nivel de prioridad de traza.
• 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.
Log4J Nivel de prioridad de traza.
• FATAL
– Se utiliza para mensajes críticos del sistema,
generalmente luego de guardar el mensaje el
programa abortará.
Log4J Nivel de prioridad de traza.
• ALL
– Este es el nivel más bajo posible, habilita todos los
logs de la aplicación.
Log4J Nivel de prioridad de traza.
• OFF
– Este es el nivel más alto posible, deshabilita todos
los logs.
Appenders
• Los Appenders son los destinos donde pueden
ser enviados los mensajes.
• Log4J cuenta con diferentes Appenders pero
es posible crear los propios.
• Dependiendo de la necesidad se pueden
configurar los diferentes Appenders en tiempo
de ejecucion.
Appenders
• Console
• File
• Rolling file
• GUI
• TCP/IP
• NT Event log
• Unix Syslog daemon
• JDBC
• SMTP
• JMS
Layouts
• Son los responsables de dar el formato a los
mensajes.
• Algunos permiten formatear en diferentes
formatos HTML, XML, TXT, etc.
• Uno de los mas usados es el PatternLayout el
cual es muy similar al funcionamiento del
printf() en C o al Formatter de JSE5.
Layouts.
• DateLayout
• HTMLLayout
• PatternLayout
• SimpleLayout
• XMLLayout
Arquitectura de log4j
Configuración
• El API de log4j es totalmente configurable y se
puede hacer con el uso de un archivo de
propiedades o un archivo XML.
– log4j.properties
– log4j.xml
Configuración
• log4j.properties
################################################################
### Configuración para LOCAL ###
################################################################
#log4j.rootCategory=DEBUG, LOGFILE, CONSOLE #log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
#log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=%-5p %c %x - %m%n
################################################################
### Configuración para DESARROLLO, PREPRODUCCION, PRODUCCION ###
### Sólo nos interesa el nivel de ERROR ### ### No hay salida de consola ###
################################################################
log4j.rootCategory=ERROR, diario
################################################################
### Configuración Común ###
################################################################
log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.file=${catalina.base}/logs/aplicacion.log log4j.appender.LOGFILE.append=true
log4j.appender.LOGFILE.DatePattern='.'yyyy-MM-dd log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c - %m%n
Configuración
• log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "dtds/org/apache/log4j/xml/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%c] %-5p - %m%n" />
</layout>
</appender>
<appender name="file" class="org.apache.log4j.FileAppender">
<!-- name is the path and name of the log file. -->
<param name="File" value="debug.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[Time: %d] [Thread: %t] [Level: %p]%m%n" />
</layout>
</appender>
<root>
<level value="debuger"></level>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
Código con log4j
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class TestSimpleLayoutAndConsoleAppender {
private static Logger logger;
static{
DOMConfigurator.configure("TestSimpleLayoutAndConsoleAppender.xml");
logger =
Logger.getLogger(TestSimpleLayoutAndConsoleAppender.class);
}
public static void main(String[] args) {
logger.info("Incio el ejemplo de log4j");
logger.debug("Este es un mensaje de debug para saber que paso por aqui");
logger.error("Este es un error");
logger.fatal("Esto es fatal");
}
}
Simple Logging Facade for Java
(SLF4J)
• SLF4J proporciona una API de registro Java a
través de un simple patrón de fachada.
• El framework de log se selecciona en tiempo
de implementación y puede ser
java.util.logging , log4j, logback o tinylog
Arquitectura slf4j
Código slf4j + log4j
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestSimpleLayoutAndConsoleAppender {
private static Logger logger=LoggerFactory.getLogger(TestSimpleLayoutAndConsoleAppender.class);
public static void main(String[] args) {
logger.info("Incio el ejemplo de slf4j + log4j ");
logger.debug("Este es un mensaje de debug para saber que paso por aqui");
logger.error("Este es un error");
logger.warn("Este es un warn");
logger.trace("Este es un trace");
}
}
Log en Aplicaciones Java y JavaEE

Más contenido relacionado

La actualidad más candente

Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no linealeslos4estatidinamicos
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)michell_quitian
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptNachoTValverde
 
Administración de oracle
Administración de oracleAdministración de oracle
Administración de oraclemdacal
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Sergio Sanchez
 
Convertir un mer en u modelo relacional
Convertir un mer en u modelo relacionalConvertir un mer en u modelo relacional
Convertir un mer en u modelo relacionalJairo Augusto Arboleda
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesJosé Antonio Sandoval Acosta
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM Kamisutra
 
Herramientas CASE
Herramientas CASEHerramientas CASE
Herramientas CASEI R
 
Manejo de cadenas de caracteres java
Manejo de cadenas de caracteres javaManejo de cadenas de caracteres java
Manejo de cadenas de caracteres javaEmerson Garay
 

La actualidad más candente (20)

Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no lineales
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
JSON
JSONJSON
JSON
 
Presentacion PL/SQL
Presentacion PL/SQLPresentacion PL/SQL
Presentacion PL/SQL
 
Administración de oracle
Administración de oracleAdministración de oracle
Administración de oracle
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
Presentacion de Microsoft SQL Server.
Presentacion de Microsoft SQL Server. Presentacion de Microsoft SQL Server.
Presentacion de Microsoft SQL Server.
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Convertir un mer en u modelo relacional
Convertir un mer en u modelo relacionalConvertir un mer en u modelo relacional
Convertir un mer en u modelo relacional
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
 
Indices tipo arbol b+
Indices tipo arbol b+Indices tipo arbol b+
Indices tipo arbol b+
 
Tecnicas de documentacion
Tecnicas de documentacionTecnicas de documentacion
Tecnicas de documentacion
 
Herramientas CASE
Herramientas CASEHerramientas CASE
Herramientas CASE
 
MVC
MVCMVC
MVC
 
Gestor de base de datos
Gestor de base de datosGestor de base de datos
Gestor de base de datos
 
Manejo de cadenas de caracteres java
Manejo de cadenas de caracteres javaManejo de cadenas de caracteres java
Manejo de cadenas de caracteres java
 

Destacado

Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey Vortexbird
 
Mejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicacionesMejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicacionesSoftware Guru
 
Servicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCServicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCVortexbird
 
Fecha y hora cmd
Fecha y hora cmdFecha y hora cmd
Fecha y hora cmdrubhen123
 
Las Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática ForenseLas Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática ForenseConferencias FIST
 

Destacado (6)

Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey
 
Mejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicacionesMejores prácticas para testing de aplicaciones
Mejores prácticas para testing de aplicaciones
 
Servicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCServicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVC
 
Practica cliente servidor java
Practica cliente servidor javaPractica cliente servidor java
Practica cliente servidor java
 
Fecha y hora cmd
Fecha y hora cmdFecha y hora cmd
Fecha y hora cmd
 
Las Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática ForenseLas Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática Forense
 

Similar a Log en Aplicaciones Java y JavaEE

Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónjusto morales
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónMarco Chunab
 
Fundamentos de Programación. Unidad I
Fundamentos de Programación. Unidad IFundamentos de Programación. Unidad I
Fundamentos de Programación. Unidad IFranco Guamán
 
lenguaje ensamblador.ppt
lenguaje ensamblador.pptlenguaje ensamblador.ppt
lenguaje ensamblador.pptCesarSaucedo17
 
Conceptos Básicos de Programación
Conceptos Básicos de ProgramaciónConceptos Básicos de Programación
Conceptos Básicos de ProgramaciónMaraIsabel87
 
Introducción a Java
Introducción a JavaIntroducción a Java
Introducción a JavaLuis Rueda
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesIsrael Castillo Cruz
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmoLigia Marcela Tafur
 
Semana 2 Lenguajes de programación.pptx
Semana 2  Lenguajes de programación.pptxSemana 2  Lenguajes de programación.pptx
Semana 2 Lenguajes de programación.pptxPriceSanchezJose
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmoTAMELIMAR
 
mantenimiento de software
mantenimiento de softwaremantenimiento de software
mantenimiento de softwareFernando42799
 

Similar a Log en Aplicaciones Java y JavaEE (20)

Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Técnicas de programación
Técnicas de programaciónTécnicas de programación
Técnicas de programación
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
lenguaje c.ppt
lenguaje c.pptlenguaje c.ppt
lenguaje c.ppt
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Fundamentos de Programación. Unidad I
Fundamentos de Programación. Unidad IFundamentos de Programación. Unidad I
Fundamentos de Programación. Unidad I
 
Paralela10
Paralela10Paralela10
Paralela10
 
Clasificacion de Interpretes
Clasificacion de InterpretesClasificacion de Interpretes
Clasificacion de Interpretes
 
lenguaje ensamblador.ppt
lenguaje ensamblador.pptlenguaje ensamblador.ppt
lenguaje ensamblador.ppt
 
TEMA Nº 1
TEMA Nº 1TEMA Nº 1
TEMA Nº 1
 
Conceptos Básicos de Programación
Conceptos Básicos de ProgramaciónConceptos Básicos de Programación
Conceptos Básicos de Programación
 
Log4j 1.2.15 Short Manual
Log4j 1.2.15 Short ManualLog4j 1.2.15 Short Manual
Log4j 1.2.15 Short Manual
 
Introducción a Java
Introducción a JavaIntroducción a Java
Introducción a Java
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretes
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmo
 
Laura Michell♥
Laura Michell♥Laura Michell♥
Laura Michell♥
 
Semana 2 Lenguajes de programación.pptx
Semana 2  Lenguajes de programación.pptxSemana 2  Lenguajes de programación.pptx
Semana 2 Lenguajes de programación.pptx
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmo
 
mantenimiento de software
mantenimiento de softwaremantenimiento de software
mantenimiento de software
 

Más de Vortexbird

Spring security 2017
Spring security 2017Spring security 2017
Spring security 2017Vortexbird
 
Spring ORM JPA
Spring ORM JPASpring ORM JPA
Spring ORM JPAVortexbird
 
Spring framework core 2017
Spring framework core 2017Spring framework core 2017
Spring framework core 2017Vortexbird
 
Bean validation 2017
Bean validation 2017Bean validation 2017
Bean validation 2017Vortexbird
 
Introduccion a JPA
Introduccion a JPAIntroduccion a JPA
Introduccion a JPAVortexbird
 
Vb.pd.zathuracode.v5.0.1
Vb.pd.zathuracode.v5.0.1Vb.pd.zathuracode.v5.0.1
Vb.pd.zathuracode.v5.0.1Vortexbird
 
Zathuracode Version 5.0.0
Zathuracode Version 5.0.0Zathuracode Version 5.0.0
Zathuracode Version 5.0.0Vortexbird
 
Web services SOAP con JAX-WS
Web services SOAP con JAX-WSWeb services SOAP con JAX-WS
Web services SOAP con JAX-WSVortexbird
 
Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RSVortexbird
 
Orm hibernate springframework
Orm hibernate springframeworkOrm hibernate springframework
Orm hibernate springframeworkVortexbird
 
Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframeworkVortexbird
 

Más de Vortexbird (13)

Spring security 2017
Spring security 2017Spring security 2017
Spring security 2017
 
Spring ORM JPA
Spring ORM JPASpring ORM JPA
Spring ORM JPA
 
Spring framework core 2017
Spring framework core 2017Spring framework core 2017
Spring framework core 2017
 
Bean validation 2017
Bean validation 2017Bean validation 2017
Bean validation 2017
 
Introduccion a JPA
Introduccion a JPAIntroduccion a JPA
Introduccion a JPA
 
Primefaces
PrimefacesPrimefaces
Primefaces
 
Facelets
FaceletsFacelets
Facelets
 
Vb.pd.zathuracode.v5.0.1
Vb.pd.zathuracode.v5.0.1Vb.pd.zathuracode.v5.0.1
Vb.pd.zathuracode.v5.0.1
 
Zathuracode Version 5.0.0
Zathuracode Version 5.0.0Zathuracode Version 5.0.0
Zathuracode Version 5.0.0
 
Web services SOAP con JAX-WS
Web services SOAP con JAX-WSWeb services SOAP con JAX-WS
Web services SOAP con JAX-WS
 
Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RS
 
Orm hibernate springframework
Orm hibernate springframeworkOrm hibernate springframework
Orm hibernate springframework
 
Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframework
 

Log en Aplicaciones Java y JavaEE

  • 1. Diego Armando Gomez Mosquera logs
  • 2. Introducción • El Log es un mensaje que le indica al desarrollador la ocurrencia de un evento que desea monitorear dentro de la aplicación. • Típicamente usamos salidas estándar en consola. – System.out.println(“”); – Console.WriteLine(“”);
  • 3. Introducción • Nuestras aplicaciones quedan con mensajes de todo tipo dentro del código, mensajes que en la salida a producción de los productos en algunos casos deben ser borrados. • El código desplegado en el servidor no habla? • En el servidor no existe forma de depurar paso a paso?
  • 4. Porque no seguir usando salidas estándar a consola? • Consume recursos en el sistema operativo ya que las llamadas a System.out.println se agregan a un archivo Log que controla el servidor de aplicaciones. • Es difícil encontrar un error dentro de toda la aplicación. • En tiempo de ejecución al utilizar System.out.println no es posible configurar el nivel de granularidad de los mensajes.
  • 5. Porque no seguir usando salidas estándar a consola? • No se pueden deshabilitar los mensajes, ya que están en código duro. • El manejo y control de mensajes en tiempo de ejecución es nulo. • No es posible enviar los mensajes a otros sistemas diferentes de la consola ejemplo JMS, JDBC, SMTP, entre otros.
  • 6. Implementaciones para el manejo de mensajes de Log. • Log4J – http://logging.apache.org/log4j • LOGBack – http://logback.qos.ch/ • slf4j – http://www.slf4j.org/ • JavaTM Logging APIs – http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/
  • 7. Log4J • Primera versión creada en 1996 por Ceki Gülcü, Michael Steiner para el proyecto SEMPER. • En el momento existen las siguientes versiones de log4J. – 1.2 – 2.0
  • 8. Log4J • Es uno de los framework mas populares del mundo Java para el manejo de logs. • El proyecto creció tanto que hoy en día existen implementaciones para diferentes lenguajes de programación como: C, C++, C#, Perl, Python, Ruby y Eiffel.
  • 9. Log4J componentes básicos. • Maneja tres componentes básicos. – Nivel de prioridad de traza. – Appenders. – Layouts. – Configuración.
  • 10. Log4J Nivel de prioridad de traza. • DEBUG • INFO • WARN • ERROR • FATAL • ALL • OFF  Nivel básico  Nivel extra
  • 11. Log4J Nivel de prioridad de traza. • DEBUG – Se utiliza para escribir mensajes de depuración, este log no debe estar activado cuando la aplicación se encuentre en producción.
  • 12. Log4J Nivel de prioridad de traza. • INFO – Se utiliza para mensajes similares al modo "verbose" en otras aplicaciones.
  • 13. Log4J Nivel de prioridad de traza. • WARN – Se utiliza para mensajes de alerta sobre eventos que se desea mantener constancia, pero que no afectan el correcto funcionamiento del programa.
  • 14. Log4J Nivel de prioridad de traza. • 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.
  • 15. Log4J Nivel de prioridad de traza. • FATAL – Se utiliza para mensajes críticos del sistema, generalmente luego de guardar el mensaje el programa abortará.
  • 16. Log4J Nivel de prioridad de traza. • ALL – Este es el nivel más bajo posible, habilita todos los logs de la aplicación.
  • 17. Log4J Nivel de prioridad de traza. • OFF – Este es el nivel más alto posible, deshabilita todos los logs.
  • 18. Appenders • Los Appenders son los destinos donde pueden ser enviados los mensajes. • Log4J cuenta con diferentes Appenders pero es posible crear los propios. • Dependiendo de la necesidad se pueden configurar los diferentes Appenders en tiempo de ejecucion.
  • 19. Appenders • Console • File • Rolling file • GUI • TCP/IP • NT Event log • Unix Syslog daemon • JDBC • SMTP • JMS
  • 20. Layouts • Son los responsables de dar el formato a los mensajes. • Algunos permiten formatear en diferentes formatos HTML, XML, TXT, etc. • Uno de los mas usados es el PatternLayout el cual es muy similar al funcionamiento del printf() en C o al Formatter de JSE5.
  • 21. Layouts. • DateLayout • HTMLLayout • PatternLayout • SimpleLayout • XMLLayout
  • 23. Configuración • El API de log4j es totalmente configurable y se puede hacer con el uso de un archivo de propiedades o un archivo XML. – log4j.properties – log4j.xml
  • 24. Configuración • log4j.properties ################################################################ ### Configuración para LOCAL ### ################################################################ #log4j.rootCategory=DEBUG, LOGFILE, CONSOLE #log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender #log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender #log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout #log4j.appender.CONSOLE.layout.ConversionPattern=%-5p %c %x - %m%n ################################################################ ### Configuración para DESARROLLO, PREPRODUCCION, PRODUCCION ### ### Sólo nos interesa el nivel de ERROR ### ### No hay salida de consola ### ################################################################ log4j.rootCategory=ERROR, diario ################################################################ ### Configuración Común ### ################################################################ log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.LOGFILE.file=${catalina.base}/logs/aplicacion.log log4j.appender.LOGFILE.append=true log4j.appender.LOGFILE.DatePattern='.'yyyy-MM-dd log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c - %m%n
  • 25. Configuración • log4j.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "dtds/org/apache/log4j/xml/log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%c] %-5p - %m%n" /> </layout> </appender> <appender name="file" class="org.apache.log4j.FileAppender"> <!-- name is the path and name of the log file. --> <param name="File" value="debug.log"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[Time: %d] [Thread: %t] [Level: %p]%m%n" /> </layout> </appender> <root> <level value="debuger"></level> <appender-ref ref="console"/> </root> </log4j:configuration>
  • 26. Código con log4j import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; public class TestSimpleLayoutAndConsoleAppender { private static Logger logger; static{ DOMConfigurator.configure("TestSimpleLayoutAndConsoleAppender.xml"); logger = Logger.getLogger(TestSimpleLayoutAndConsoleAppender.class); } public static void main(String[] args) { logger.info("Incio el ejemplo de log4j"); logger.debug("Este es un mensaje de debug para saber que paso por aqui"); logger.error("Este es un error"); logger.fatal("Esto es fatal"); } }
  • 27. Simple Logging Facade for Java (SLF4J) • SLF4J proporciona una API de registro Java a través de un simple patrón de fachada. • El framework de log se selecciona en tiempo de implementación y puede ser java.util.logging , log4j, logback o tinylog
  • 29. Código slf4j + log4j import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestSimpleLayoutAndConsoleAppender { private static Logger logger=LoggerFactory.getLogger(TestSimpleLayoutAndConsoleAppender.class); public static void main(String[] args) { logger.info("Incio el ejemplo de slf4j + log4j "); logger.debug("Este es un mensaje de debug para saber que paso por aqui"); logger.error("Este es un error"); logger.warn("Este es un warn"); logger.trace("Este es un trace"); } }