Frage

Die Umgebung meiner Anwendung: webbasiert, Spring MVC+Security, Hibernate, MySQL (InnoDB)

Ich arbeite an einer kleinen Datenbankanwendung, die von einer Weboberfläche betrieben wird. Es gibt bestimmte und bekannte Benutzer, die die gespeicherten Daten verarbeiten. Jetzt muss ich jede Aktion erstellen/aktualisieren/löschen, die ein Benutzer in der Datenbank ausführt und einfache "listenähnliche" Berichte aus diesem Bereich erstellen. Ab sofort denke ich an eine "Protokoll" -Tabelle (Spalten: UserID + Zeitstempel + Beschreibung usw.). Ich denke, ein Aspekt könnte auf jede C (R) -OD -Operation abgefeuert werden, die eine Protokollzeile in dieser Tabelle einfügt. Aber ich bin mir nicht sicher, ob es so gemacht werden sollte.

Ich bin mir auch die üblichen MySQL -Protokolle sowie log4j bewusst. Was die Protokolldateien betrifft, benötige ich möglicherweise mehr Informationen als das, was MySQL zur Verfügung steht. Log4j mag eine Lösung sein, aber ich sehe nicht, wie es in MySQL -Tabellen schreiben kann. Außerdem möchte ich einige Assoziationen in meiner Protokolltabelle (z. B. der Benutzer -ID) bewahren, damit die DB die grundlegenden Filterung usw. durchführen lässt.

Was würdest du empfehlen? Gibt es sogar eine eingebaute Unterstützung in Hibernate/Spring oder ist LOG4J den richtigen Weg?

Vielen Dank!

War es hilfreich?

Lösung

  1. Log4j ist modular. Sie können Ihr eigenes Backend schreiben, das das Protokoll in eine Datenbank schreibt, wenn Sie dies tun möchten. in der Tat kommt es sogar mit einem JDBC Appender Machen Sie sich die große rote Warnung dort aus.
  2. Für den Winterschlaf können Sie wahrscheinlich etwas auf dem bauen Interceptors und Ereignisse Das verfolgt alle Modifikationen und protokolliert sie in einer speziellen Audit -Tabelle.

Andere Tipps

Haben Sie sich mit einer Kartierverträglichkeit für C (R) UD -Operationsprotokollierung befasst?

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

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

Wenn Sie sich für eine Protokollierungslösung entscheiden und sie selbst suchen, versuchen Sie, nach JDBCAppender zu suchen, es ist nicht perfekt, sollte aber funktionieren.

Falls Sie das Regalprodukt für eine zentralisierte Protokollierung vom Regal erwarten möchten, sollten Sie es versuchen Protokollflächen - Es kann direkt in Ihre eigene Datenbank schreiben (Offenlegung: Ich bin der Autor dieses Produkts.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top