log , basse de datos y prioridad

Hola Comunidad:

Alguien me puede aclarar lo siguiente, si tengo este archivo de configuracion log:
 
En en Logs-->en la base de datos Prueba(Fecha,clase,Prioridad,MensajeLog) va guradar toda info que yo le pase a una clase determinada
package com:
ClassTest{
........................
logger.info("esta es la clave "+key);
}

entonces en la Tabla va quedar algo como:

id Clase Prioridad MensajeLog
12 com.test INFO 4
....

y asi sucesivamente . Entonces mi pregunta es , y como soy ignorante en el tema de los log , en esta parte

 

Solo se puede usar una sola prioridad???

por poner un ejemplo si qusiera guardar error en la tabla como queda ??

he intentado

 

pero me manda un error y no guarda , alguien que sepa como guardar las dintintas prioridades en una sola tabla ??

se puede???

o solo se puede tener una prioridad a la vez???

se debe hacer otro append por cada prioridad??

bueno eso seria mis preguntas, de antemnao por sus respuesta un saludo a esta gran comunidad.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Lo único con lo que te podría

Lo único con lo que te podría ayudar, es diciéndote que te leas la documentación... que en realidad no sé que tan clara y/o completa esté... realmente nunca me había cuestionado lo que planteas...
También te dejo una referencia de aquí mismo ( gracias a bimboso_d ), donde trae la configuración de log4j pero en properties.... no creo que varíe demasiado al XML...

Imagen de ezamudio

prioridad

La prioridad es un umbral, y solamente le puedes poner una prioridad a cada appender. Lo que haces con eso es que ese appender solamente registra eventos de la prioridad que le digas hacia arriba. Por ejemplo si le pones ERROR pues solamente reportará ERROR y FATAL; si le pones INFO, reportará INFO, WARN, ERROR y FATAL, pero no DEBUG ni TRACE.

Dentro del tag   deja solamente un priority y un solo appender-ref. El priority que pongas indica el nivel mínimo de log que se reportará en el appender.

Aprovechando que estás usando la config en XML, te recomiendo que uses el AsyncAppender, para que los registros a base de datos no causen un retraso en el código que invoca el log:

 

Y como dice neko069, échale un ojo a la documentación.

Gracias, mi idea es guardar

Gracias, mi idea es guardar los info , pero ademas los traces y debug , luego crear un hilo he ir llamando para saber que lo que ocurre cuando se monta sobre tomcat en tiempo real

Imagen de ezamudio

archivo

Y no es más fácil entonces simplemente leer un archivo de texto? Usar RollingFileAppender o DailyRollingFileAppender... si quieres ver qué está pasando en tiempo real, haces tail -f archivo para ver lo que se va escribiendo ahí; si quieres buscar algún evento en particular puedes usar grep con regex y encuentras lo que necesites; si necesitas ver lo que ocurrió a cierta hora igual con una búsqueda dentro de un editor o visor de texto (por ejemplo con view que es la versión de sólo lectura de vi, puedes buscar lo que ocurrió a cierta hora tecleando el comando   o la hora que necesites).

Y si necesitas un análisis más elaborado de tus logs, échale un ojo a Splunk, hay una versión gratuita que casi ni le tienes que hacer nada porque reconoce los formatos de log4j y te saca un análisis de los tipos de eventos que se registran, la frecuencia, etc.

Qué pasa si hay un error en tu base de datos, pierdes la conexión, etc? Estás usando una base de datos separada para tus logs? Deberías de tener una base de datos para eso, separada de la base de datos que usas para tu aplicación (separada incluso a nivel de que esté en otro equipo). Si lo tienes todo junto, estás afectando mucho el desempeño de tu aplicación con los logs que estás guardando y corres el riesgo de llenarla por los logs, y que ya no se puedan guardar datos de aplicación, etc. Tienes que poner tareas periódicas para borrar logs viejos o sacarlos a un respaldo (o a un archivo de texto) para evitar que se llene mucho. Como yo veo ese appender de JDBC, es una idea mona pero no es muy práctica en la realidad a menos que tengas un RDBMS dedicado para los logs.