2011-03-11 23 views
5

Estoy trabajando en un proyecto para combinar datos de registro de varias máquinas en una única base de datos.Registro distribuido con JMS y logback

tengo a escenarios de registro:

  1. registro habitual de las excepciones y el registro de desarrollador por ejemplo, un dev convierte el nivel en depurar.
  2. "Audit" logging. Escenarios especiales deben registrarse en un DB separado con estructura separada.

Estoy usando logback y JMS. El "cliente" inicia sesión en JMS Queue y "Server" lee la cola de formularios y escribe en DB.

Estoy buscando una manera simple de distinguir los dos tipos de registros. Lo que me gustaría hacer es crear otro nivel de registro, p. "auditoría" que luego podría verificar en el lado del "servidor" y crear nuestra estructura especial de objetos y escribir en nuestro DB separado.

Sin embargo, esto no es posible en la copia de seguridad. He considerado los marcadores, pero eso significa que un desarrollador debe aplicar explícitamente un marcador. Mi otra opción es tener dos registradores separados y para que el desarrollador agarre el registrador correcto. Eso no es tan elegante como me gustaría.

Me gustaría que el desarrollador simplemente haga log.debug para la depuración, log.error para los errores y log.audit para la auditoría.

¿Algún consejo, alguien tenía que resolver un problema similar?

Respuesta

3

En primer lugar, ¿por qué no utilizar DBAppender y registrarse directamente en la base de datos, omitiendo la capa JMS? Logback proporciona instalaciones al log asynchronously si el rendimiento es su preocupación.

En cuanto al filtrado, el registrador por separado es la manera más fácil y limpia de hacerlo (y luego simplemente filtrar por registrador/categoría). Este enfoque enfatiza el hecho de que estos son registros especiales, no la depuración de aplicaciones ordinaria. Incluso consideraría incluir este registro de auditoría en algún servicio/aspecto para separarlo de la lógica comercial.

Si realmente desea reutilizar registradores existentes, puede usar Logback filters para despachar y filtrar eventos en tiempo de ejecución.

+0

Y si la base de datos no está disponible, ¿qué ocurre? La infraestructura JMS podría no estar disponible también, sin embargo, nunca experimenté una interrupción JMS no planificada (en mi caso TIBCO EMS), pero he visto muchas interrupciones de DB no planificadas. –

+0

Thomasz, ¿puede proporcionar un enlace sobre cómo Logback admite el registro asincrónico? No puedo encontrar ninguna referencia en su documentación o en el JavaDoc. Gracias. – curthipster

+1

¡OMG! Todavía no hecho: [LBCORE-92] (http://jira.qos.ch/browse/LBCORE-92), [LBCLASSIC-177] (http://jira.qos.ch/browse/LBCLASSIC-177). .. Editar mi respuesta –

Cuestiones relacionadas