2010-09-23 6 views
12

¿conoces alguna buena biblioteca de Java para el registro de auditoría? ¿O al menos un buen libro/artículo para ayudar a elegir un buen enfoque para construir un registro de auditoría para una aplicación?Registro de auditoría comercial: ¿biblioteca o enfoque recomendado?

requisitos de Bibliotecas:
- Definir metadatos común de auditoría (ID de usuario, hora, IP, ...)
- definir los tipos de mensajes de auditoría de transacciones (enviados, mensaje recibido, ...)
- Bloqueo/firmar los mensajes individuales de auditoría (por no repudio)
- registro de auditoría de búsqueda basado en metadatos
- etc.

Editar:
no estoy looki ng para la solución automatizada, soy muy feliz con llamar algo así como:

AuditEvent event = new TransactionSentEvent(userId, account, amount, ...) 
AuditLog.audit(auditEvent); 

El punto es tener la infraestructura detrás de él - el almacenamiento seguro a la base de datos, no la reputación etc.

Respuesta

1

qué pasa con este https://github.com/dima767/inspektr Tengo casi los mismos requisitos que usted describió anteriormente, y estoy investigando en inspektr.

+0

Cool, eso es exactamente lo que he estado buscando! – krtek

4

Si está utilizando Java, una forma es usar springframework y aop. Esta es la opción más flexible. Here is an example

También puede hacerlo a nivel de base de datos usando Hibernate (more info)

+0

Si tuviera que hacerlo de nuevo, lo haría así. Sin embargo, debe estructurar su lógica de negocio muy _cleanly_ para que esto funcione ya que la interceptación del método no siempre proporciona detalles obtenidos dentro de un método (por ejemplo, si busca una cuenta dentro de un método y desea auditar alguna propiedad no id de la cuenta (como el valor actual) no estará disponible para el interceptor, por lo que debe dividir el método en dos, de modo que todas las propiedades que desee auditar estén en el alcance del interceptor del método. – Justin

+0

Gracias por su respuesta, de hecho, estoy más buscando una auditoría de "nivel superior" que el método o el nivel de clase. – krtek

+0

Esta respuesta es muy útil para mí, prefiero optar por Hibernate.;) – huahsin68

1

Puede utilizar la biblioteca AscpectJ sin primavera, a través de anotaciones

+0

Sí, eso es cierto, olvidé mencionarlo. Gracias. – surajz

0

Un buen enfoque para el registro de nivel de negocio/operación es determinar qué es exactamente lo que necesita iniciar sesión. Ya has hecho eso.

Realmente no necesita ningún marco nuevo o AOP para agregar. Sin embargo, tiene algunos requisitos adicionales que le impiden utilizar los marcos de registro comunes como Log4J o java.util.logging sin crear más trabajo.

El enfoque más fácil que puedo pensar que puede hacer es tener una clase de auditoría que tenga una conexión JDBC inyectada o configurada en ella. Esto puede hacerse a través de Spring si ya está usando ese framework. Si no tiene un contenedor DI, necesita definir esto como singleton.

Otra cosa que necesita es una capacidad de firma. Java tiene java.security.Signature para firmar y verificar datos.

Como dije anteriormente, tiene requisitos que le impiden utilizar los marcos de registro disponibles. Es decir:

  • búsqueda de registro de auditoría basado en metadatos

Para que usted pueda facilitar la búsqueda que necesita para almacenar los datos en una base de datos como escribir en un archivo de texto que será difícil de hacer. Al utilizar los marcos de registro, debe aprender la API y vincularse con el marco que no forma parte del estándar.

10

Por lo tanto, si está buscando un marco, puede probar logback-audit. Es por la gente que está detrás de la biblioteca de registro de Java, logback.

+0

¡Gracias! Estaba buscando esto ... – krtek

+3

NB: logback-audit es un software comercial –

Cuestiones relacionadas