Logging
-
Hmm, das Problem ist das es jetzt noch wenige Querys sind, aber im schon fertigen Programm sind es einfach zu viele um überall noch was dazu zu machen.
Es sollte irgendwie alles Zentral abgefangen werden, also egal ob gerade was gelöscht wurde, was hinzugefügt wurde usw.
Das Log soll so aufgebaut sein:
Datenbank(bleibt ja eh immer die gleiche)->Tabelle->Feld->Query(also was gemacht wurde);
Jetzt stellt sich mir halt die Frage wie ich das abfangen kann.
-
Dann mußt du deine Queries halt über eine zentrale Methode laufen lassen, die dann zusätzlich noch das Logging macht (evtl. noch Parameter mitgeben oder aus dem Query-String die Daten extrahieren).
Bei anderen Datenbanken (MSSQL, Oracle oder PostgreSQL) könnte man evtl. noch Trigger dafür benutzen, aber dies geht m.E. bei MySQL nicht.
-
Ich versteh zwar was du meinst, aber ich hab keine Ahnung wie das Code mäßig aussehen könnte.
Könntest du mir bitte mal ein kleines Beispiel geben, nur damit ich mal nen Anfang habe.
-
deine_sql_query_func("Select blala from lala");
->
deine_sql_query_und_log_func(String query) { deine_sql_query_func(query); log_func(String(time)+query); }
greetz KN4CK3R
-
@ KN4CK3R:
Sorry wenn ich mich doof anstelle, aber wie kann ich denn damit jedes Query abfangen?
Ich glaub ich steh auf dem Schlauch (oder wir reden aneinander vorbei).
-
du musst alle deine queryfunktionen mit dieser neuen queryundlogfunktion ersetzen.
greetz KN4CK3R
-
Achso, ja, jetzt versteh ich es.
Danke!
-
Ich sage auch: danke KN4CK3R -)
Ich bin eigentlich davon ausgegangen, daß jemand der eine Datenbankanbindung programmieren kann, auch schon die Grundlagen von Funktionen kennt...
-
Th69 schrieb:
Ich sage auch: danke KN4CK3R -)
Ich bin eigentlich davon ausgegangen, daß jemand der eine Datenbankanbindung programmieren kann, auch schon die Grundlagen von Funktionen kennt...
Wie gut das man nicht immer alles selber programmieren muss, sondern das es im BCB auch andere Möglichkeiten dazu gibt.
Und ja, ich weiß was Funktionen usw. sind, und auch wie was funktioniert. Mir war nur nicht klar wie ich die ganzen Querys abfangen kann, und zwar alle, egal was grad ausgeführt wird.
-
Ich würde das Logging vor dem SQL Aufruf machen, wenn der SQL Aufruf eine Exception erzeugt hast du keine Ahnung, welcher Aufruf dafür verantwortlich war. Mit dem Loggen vor dem SQL Aufruf muss die letzte Zeile dann den Fehler verursacht haben und ist damit schnell identifiziert.