Question

L’environnement de mon application: Web, Spring MVC + Security, Hibernate, MySQL (InnoDB)

Je travaille sur une petite application de base de données exploitée à partir d'une interface Web. Il existe des utilisateurs spécifiques et connus qui gèrent les données stockées. Maintenant, je dois garder trace de chaque action de création / mise à jour / suppression qu'un utilisateur exécute sur la base de données et produire des résultats simples et "similaires à ceux d'une liste". rapports de cela. À l’heure actuelle, je pense à un "journal". table (colonnes: userId + timestamp + description etc.). Je suppose qu'un aspect pourrait être déclenché sur n'importe quelle opération C (R) UD insérant une ligne de journal dans cette table. Mais je ne suis pas sûr que ce soit comme cela que cela devrait être fait.

Je connais également les journaux MySQL habituels ainsi que log4j. En ce qui concerne les fichiers journaux, je pourrais avoir besoin de plus d'informations que celles disponibles pour MySQL. Log4j pourrait être une solution, mais je ne vois pas comment il est capable d'écrire dans les tables MySQL. De plus, j'aimerais conserver certaines associations dans ma table de journalisation (par exemple, l'ID utilisateur) pour permettre à la base de données de faire le filtrage de base, etc. Les instructions relatives à celle-ci sont appréciées.

Que recommanderiez-vous? Existe-t-il même un support intégré dans Hibernate / Spring ou log4j est-il la bonne solution?

Merci!

Était-ce utile?

La solution

  1. Log4j est modulaire, vous pouvez écrire votre propre backend qui écrit le journal dans une base de données si vous le souhaitez. En fait, il est même livré avec un appender JDBC dès la sortie de la boîte, mais notez le gros avertissement rouge.
  2. Pour Hibernate, vous pouvez probablement créer quelque chose sur intercepteurs et événements qui suivent toutes les modifications et les consignent dans une table d'audit spéciale.

Autres conseils

Avez-vous envisagé d’utiliser une classe MappedSuperclass pour la journalisation des opérations C (R) UD?

@MappedSuperclass
public class BaseEntity {
@Basic
@Temporal(TemporalType.TIMESTAMP)
public Date getLastUpdate() { ... }
public String getLastUpdater() { ... }
...
}

@Entity class Order extends BaseEntity {
@Id public Integer getId() { ... }
...
}

Si vous recherchez une solution de journalisation et cherchez à le faire vous-même, essayez de rechercher JDBCAppender, ce n’est pas parfait, mais devrait fonctionner.

Si vous voulez un produit prêt à l'emploi pour la journalisation centralisée, envisagez d'essayer logFaces - il peut écrire directement dans votre propre base de données ( Divulgation : je suis l'auteur de ce produit.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top