log auditlog database django audit audit-trail reversion

database - auditlog - django AuditTrail vs Reversion



audit log django (3)

Como dije en mi pregunta, rcField parece ser demasiado para mis necesidades, lo cual es simple, quiero almacenar cualquier cambio en mi tabla y es posible que luego vuelvan a esos cambios para generar algunos informes.

Así que probé que AuditTrail y Reversion Reversion parecen ser una aplicación mejor y más completa con muchas características (que no necesito). También, por lo que sé, guarda datos en una sola tabla en formato XML o YAML, lo cual creo

  1. generará demasiados datos en una sola tabla
  2. Para leer esos datos, es posible que no pueda utilizar las herramientas de db ya existentes.

AuditTrail gana al respecto que, para cada tabla, genera una tabla de auditoría correspondiente y, por lo tanto, los cambios se pueden rastrear fácilmente, los datos por tabla son menores y se pueden manipular fácilmente y los usuarios pueden generar informes.

Así que voy con AuditTrail.

Estoy trabajando en una nueva aplicación web que necesito para almacenar cualquier cambio en la base de datos para auditar las tablas. El propósito de dichas tablas de auditoría es que más adelante, en una auditoría física real, podemos determinar qué sucedió en una situación, quién editó qué y cuál era el estado de db en el momento de, por ejemplo, un cálculo complejo. Así que sobre todo la tabla de auditoría se escribirá y no se leerá. Informe puede ser generado aunque a veces.

He buscado la solución disponible.

  1. AuditTrail - simple y es por eso que me inclino hacia él, puedo entenderlo solo código de archivo.
  2. Reversion : parece lo suficientemente simple de usar, pero no está seguro de lo fácil que sería modificarlo si fuera necesario.
  3. rcsField parece ser muy complejo y demasiado para mis necesidades

No he probado ninguno de estos, así que quería conocer algunas experiencias reales y cuál debería estar usando. Por ejemplo, ¿cuál es más rápido, utiliza menos espacio, es fácil de extender y mantener?


No puedo darte una experiencia real con ninguno de ellos, pero me gustaría hacer una observación.

Supongo que por AuditTrail te refieres a AuditTrail en la wiki de Django . Si es así, creo que querrás mirar en su lugar los registros HistoricalRecords desarrollados por el mismo autor (Marty Alchin aka @gulopine) en su libro Pro Django . Debería funcionar mejor con Django 1.x.

Este es el enfoque que usaré en un próximo proyecto, no porque necesariamente supere a los demás desde un punto de vista técnico, sino porque coincide con las expectativas del "mundo real" de la pista de auditoría para esa aplicación.


Personalmente, prefiero crear tablas de auditoría en la base de datos y rellenar a través de los desencadenantes para que se guarden los cambios, incluso las consultas ad hoc de la ventana de consulta. Nunca consideraría una solución de auditoría que no esté basada en la propia base de datos. Esto es importante porque las personas que realizan cambios maliciosos en la base de datos o cometen un fraude probablemente no lo hagan a través de la interfaz web, sino directamente en el backend. Mucho más de esto sucede de empleados descontentos o larcenos que de piratas informáticos externos. Si ya está utilizando un ORM, sus datos están en riesgo debido a que los permisos se encuentran en el nivel de la tabla en lugar del nivel de SP al que pertenecen. Por lo tanto, es aún más importante que capture cualquier posible cambio en los datos, no solo lo que era de la GUI. Tenemos un proceso dinámico para crear tablas de auditoría que se ejecutan cada vez que se agregan nuevas tablas a la base de datos. Dado que nuestras tablas de auditoría completan solo los cambios y no todo el registro, no necesitamos cambiarlos cada vez que se agrega un campo.

Además, al evaluar posibles soluciones, asegúrese de tener en cuenta lo difícil que será revertir los datos para deshacer un cambio específico. Una vez que tenga las tablas de auditoría, encontrará que esta es una de las cosas más importantes que debe hacer de ellas. También considere lo difícil que será mantener la información a medida que cambie el esquema de la base de datos.

Elegir una solución porque parece ser la más fácil de entender, generalmente no es una buena idea. Ese debe ser el más bajo de sus criterios de selección después de cumplir con los requisitos, la seguridad, etc.