Log4J - Appenders - Tipo de Appenders

Hola como hace poco empezamos con los primeros pasos de log4j hoy vamos a seguir hablando del tema, fundamentalmente a tratar hoy es Appenders.


Appenders.

En Log4J los mensajes son enviados a una (o varias) salida de destino, lo que se denomina un appender. Existen varios appenders y también podemos crear propios. 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.

 No se precupen si no entienden la configuración, de a poco vamos a ver cada punto.

Los appenders se configuran en el archivo externo.Los appenders que vienen con Log4J se encuentran en el paquete org.apache.log4j. Estos son: 

ConsoleAppender

Este appender despliega el log en la consola; tiene las siguientes opciones:

  • Threshold=WARN: Este parámetro establece que el appender no despliega ningún mensaje con prioridad menor a la especificada aquí.
  • ImmediateFlush=true: El valor por defecto es true, esto quiere decir que los mensajes de log no son almacenados en un buffer, sino que son enviados directamente al destino.
  • Target=System.err: El valor por defecto es System.out. Establece la salida del sistema a ser utilizada.

FileAppender

Este appender redirecciona los mensajes de logs hacia un archivo.

  • Threshold=WARN: Este parámetro establece que el appender no despliega ningún mensaje con prioridad menor a la especificada aquí.
  • ImmediateFlush=true: El valor por defecto es true, esto quiere decir que los mensajes de log no son almacenadosen un buffer, sino que son enviados directamente al destino.
  • File=mylog.txt: Nombre del archivo donde se almacenará el log. Se puede utilizar el nombre de algún property (${nombre_de_la_propiedad}) para especificar el nombre o la ubicación del archivo.
  • Append=false: El valor por defecto es true, para que los nuevos mensajes de logs se adicionen al archivo existente.
  • Si se especifica false, cuando se inicie la aplicación el archivo de log se sobreescribirá. 



    RollingFileAppender

    Este appender redirecciona los mensajes de logs hacia un archivo y permite definir politicas de rotación para que el archivo no crezca indefinidamente.

    • Threshold=WARN: Este parámetro establece que el appender no despliega ningún mensaje con prioridad menor a la especificada aquí.
    • ImmediateFlush=true: El valor por defecto es true, esto quiere decir que los mensajes de log no son almacenados en un buffer, sino que son enviados directamente al destino.
    • File=mylog.txt: Nombre del archivo donde se almacenará el log. Se puede utilizar el nombre de algún property (${nombre_de_la_propiedad}) para especificar el nombre o la ubicación del archivo.
    • Append=false: El valor por defecto es true, para que los nuevos mensajes de logs se adicionen al archivo existente. Si se especifica false, cuando se inicie la aplicación el archivo de log se sobreescribirá.
    • MaxFileSize=100KB: Los sufijos pueden ser KB, MB o GB. Rota el archivo de log cuando alcanza el tamaño especificado.
    • MaxBackupIndex=2: Mantiene un máximo de 2 (por ejemplo) archivos de respaldo. Borra los archivos anteriores.Si se especifica 0 no se mantiene respaldos.

    DailyRollingFileAppender

    Este appender redirecciona los mensajes de logs hacia un archivo y permite definir politicas de rotación basados en fechas.

    • Threshold=WARN: Este parámetro establece que el appender no despliega ningún mensaje con prioridad menor a la especificada aquí.
    • ImmediateFlush=true: El valor por defecto es true, esto quiere decir que los mensajes de log no son almacenados en un buffer, sino que son enviados directamente al destino.
    • File=mylog.txt: Nombre del archivo donde se almacenará el log. Se puede utilizar el nombre de algún property (${nombre_del_property}) para especificar el nombre o la ubicación del archivo.
    • Append=false: El valor por defecto es true, para que los nuevos mensajes de logs se adicionen al archivo existente.Si se especifica false, cuando se inicie la aplicación el archivo de log se sobreescribirá.
    • DatePattern='.'yyyy-ww: Rota el archivo cada semana Se puede especificar que la frecuencia de rotación sea mensual, semanal, diaria, 2 veces al día, cada hora o cada minuto. Este valor no solo especifica la frecuencia de rotación sino el sufijo del archivo de respaldo. Algunos ejemplos de frecuencia de rotación son:


    1. '.'yyyy-MM: Rota el archivo el primero de cada mes
    2. '.'yyyy-ww: Rota el archivo al inicio de cada semana
    3. '.'yyyy-MM-dd: Rota el archivo a la media noche todos los días
    4. '.'yyyy-MM-dd-a: Rota el archivo a la media noche y al media día, todos los días
    5. '.'yyyy-MM-dd-HH: Rota el archivo al inicio de cada hora
    6. '.'yyyy-MM-dd-HH-mm: Rota el archivo al inicio de cada minuto

    SocketAppender

    Redirecciona los mensajes de logs hacia un servidor remoto de log.

    El mensaje de log se almacenará en el servidor remoto sin sufrir alteraciones en los datos (como fecha, tiempo desde que se inicio la aplicación, NDC), exactamente como si hubiese sido guardado localmente.

    El SocketAppender no utiliza Layout. Únicamente serializa el objeto LoggingEvent para enviarlo.
    Utiliza TCP/IP, consecuentemente si el servidor es accesible el mensaje eventualemente arribará al servidor. Si el servidor remoto está abajo, la petición de log será simplemente rota. Cuando el servidor vuelva a estar disponible la transmisión se reasume transparentemente.Esta reconexión transparente es realizada por un connector thread que periodicamente revisa si existe conexión con el servidor.

    Los eventos de logging son automaticamente almacenados en memoria por la implementación nativa de TCP/IP. Esto quiere decir que si la conexión hacia el servidor de logs es lenta y la conexión con los clientes es rápida, los clientes no se ven afectados por la lentitud de la red.

    El SocketAppender tiene las siguientes propiedades:

    • Threshold=WARN: Este parámetro establece que el appender no despliega ningún mensaje con prioridad menor a la especificada aquí.
    • ImmediateFlush=true: El valor por defecto es true, esto quiere decir que los mensajes de log no son almacenados en un buffer, sino que son enviados directamente al destino.
    • port=6548: Especifica el puerto por el que se va a comunicar al servidor de logs.
    • remoteHost=192.168.10.225: Especifica la máquina donde se encuentra el servidor de logs.
    • reconnectionDelay=300: El valor por defecto es de 30000 milisegundos, que corresponden a 30 segundos. Es un valor entero que corresponde al número de milisegundos que va a esperar para volver a intentar conectarse con el servidor cuando se ha perdido comunicación con este.

    SMTPAppender

    Envia un mail con los mensajes de logs, típicamente se utiliza para los niveles ERROR y FATAL.

    El número de eventos de log enviados en el mail depende del valor de BufferSize. El SMTPAppender mantiene únicamente el último BifferSize en un buffer cíclico.

    • Threshold=WARN: Este parámetro establece que el appender no despliega ningún mensaje con prioridad menor a la especificada aquí.
    • ImmediateFlush=true: El valor por defecto es true, esto quiere decir que los mensajes de log no son almacenados en un buffer, sino que son enviados directamente al destino.
    • To=direccion1@dominio.com: Especifica la dirección de correo a donde se enviará el mail.
    • From=direccion2@dominio.com: Especifica la dirección de correo desde donde se envia el mail.
    • SMTPHost=mail.dominio.com: Especifica el servidor de SMTP que se va a utilizar para enviar el mail.
    • Subject=Mensajes de Logs: Especifica el asunto del mail.
    • LocationInfo=true: El valor por defecto es false. Envía información acerca de la ubicación donde se generó el evento de log.
    • BufferSize=20: El valor por defecto es 512. Representa el número máximo de eventos de logs que serán recolectados antes de enviar el mail.

    JDBCAppender

    Este appender redirecciona los mensajes de log hacia una base de datos.

    • Threshold=WARN: Este parámetro establece que el appender no despliega ningún mensaje con prioridad menor a la especificada aquí.
    • ImmediateFlush=true: El valor por defecto es true, esto quiere decir que los mensajes de log no son almacenados en un buffer, sino que son enviados directamente al destino.
    • Driver=mm.mysql.Driver: Define el driver a ser utilizado, asegurese de tener la clase en el CLASSPATH.
    • URL=jdbc:mysql://localhost/LOG4JDemo: Es la cadena de conexión que se utilizará.
    • ser=default: El usuario de la base de datos.
    • password=default: La clave para poder ingresar a la base de datos.
    • sql=INSERT INTO TABLA (Message) VALUES ('%d - %c - %p - %m'): La instrucción SQL que se utiliza para grabar el mensaje en la base de datos. Si se desea se puede guardar cada valor en columnas separadas,por ejemplo: INSERT INTO JDBCTEST (Date, Logger, Priority, Message) VALUES ('%d', '%c', '%p', '%m').

    Otros appeders:
    SyslogAppender: redirecciona los mensajes de logs sistemas operativos Unix. 

    NTEventLogAppender: redirecciona los mensajes de logs hacia los logs del sistema de NT. 

    JMSAppender: serializa los eventos y los transmite como un mensaje JMS tipo ObjectMessage. 



    Fuente


    TEMAS  RELACIONADOS


    Log4J - Appenders - Tipo de Appenders Log4J - Appenders - Tipo de Appenders Reviewed by El lado oscuro de java on abril 27, 2012 Rating: 5

    No hay comentarios:

    Con la tecnología de Blogger.