Laden...

History erstellen?!

Erstellt von ZeroQool vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.966 Views
Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 17 Jahren
History erstellen?!

Hallo, hat jemand schon einmal eine History erstellt bzw Logtabelle? Bräuchte vllt ein paar Ansätze wie man sowas gut umsetzen kann. Es geht darum in einerm WWS imgrunde alles mitzuloggen, angefangen vom Kunden erstellen, bis zur Änderung einer Rechnung usw. Hoffe mein Problem ist klar geworden! 🙂 Habe über die Hilfe leider nicht viel gefunden....

THX IM VORAUS

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo ZeroQool,

==> log4net

herbivore

225 Beiträge seit 2006
vor 17 Jahren

Hi,

im Praktikum hatte ich so was. War beim proggen sau nervig. Aber wenn Du im Endeffekt den Fehler schnell finden wolltest war es unumgänglich.

Es hängt halt davon ab was Du alles loggen willst und das hängt wieder davon ab wozu die Log-File gut sein soll.
Wenn es wie bei meinem Praktikum zum Fehler finden gut sein soll solltest Du wirklich am Ende JEDER Methode eine Logmessage generieren der dir verrät, dass die Methode erfolgreich ausgeführt wurde bzw. dass es dort zu einem Fehler gekommen ist (am besten noch mit Fehlerbeschreibung). Natürlich speicherst Du die Message erst ab wenn es auch zu einem Fehler gekommen ist.

Ansonsten einfach immer in eine Textfile speichern was Du haben willst.

Am wichtigsten ist, dass Du dir im klaren wirst wozu die Log gut sein soll. Dann ergibt sich der Aufbau von selbst.

Yunky: was fürn operator muss ich den nehmen wenn ich sagen will nichtgrößergleich??
Yunky: !>3??
Yunky: !≥ ??
Puppetmaster: G
Yunky: aja ka
Puppetmaster: kleiner (<)
Yunky: stimmt^^

Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 17 Jahren

Ich will einfach alles logen, wer u wann zB die Adresse geändert hat usw. Damit falls mal jemand einen fehler gemacht, der Täter sofort ergriffen werden kann =)

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo ZeroQool,

Damit falls mal jemand einen fehler gemacht, der Täter sofort ergriffen werden kann

oh, oh, das sind ja strenge Sitten! Wenn ich für jeden Fehler, den ich mache oder gemacht habe ergriffen werden sollte, dann wäre da ganz schön was zu tun.

Außerdem denke ich, du solltest auch gleich ergriffen werden, weil du Fehler kleingeschrieben hast. Quasi als Rechtschreibtäter 🙂

herbivore

Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 17 Jahren

😉

Geht darum, dass die Firma viel verkauft usw. Falls Preisänderungen waren, wußte niemand wer u wann es gemacht worden ist. Soll ein sehr umfangreiches Log sein.

6.862 Beiträge seit 2003
vor 17 Jahren

Ne passende Lib wurde ja schon genannt, der Rest ist Fleißarbeit.

Einfach an allen Stellen wo was geloggt werden soll, das einbaun und schön ausgeben lassen 😉

Baka wa shinanakya naoranai.

Mein XING Profil.

Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 17 Jahren

Hat jemand vllt ein BspLog gerade da, damit ich mir ansehen kann wie das optisch aussieht? habe auf der off. Seite so etwas nicht gesehen, sprich Sample, Screenshot

6.862 Beiträge seit 2003
vor 17 Jahren

Schau dir am besten mal die Beispielanwendungen an: http://logging.apache.org/log4net/release/example-apps.html

Prinzipiell sind deiner Kreativität kaum Grenzen gesetzt

Baka wa shinanakya naoranai.

Mein XING Profil.

2.921 Beiträge seit 2005
vor 17 Jahren

Da ich hier immer von Log4Net höre und mir das inzwischen auch nicht mehr unbekannt ist, mal ein Beispiel wie ich das bisher gelöst habe mit dem Loggen:

Es gibt eine Klasse CDebug in der die ganzen Methoden statisch vorhanden sind.

Warum statisch? Weil es am Anfang nur die Klasse CDebug gab und man sollte einfach ohne großen Aufwand in eine Datei loggen können.

Dann kam die Anforderung auch andere Formate loggen können zu wollen.

Also habe ich einfach die Klasse CDebug um etwas das ich Outputs genannt habe erweitert.

Jede Output-Klasse wird von COutput abgeleitet.

COutput hat immer die Methoden Open, Write und Close.

Jetzt kann zur Laufzeit zu mittels


CDebug.Outputs.Add(new OwnOutput());

hinzugefügt werden.

Wenn jetzt CDebug.Write oder CDebug.WriteLine usw. aufgerufen wird, werden alle in Outputs enthaltenen Outputs die aktiv sind durchgegangen und geschrieben.

Bisher habe ich auch so etwas wie

FileOutput
XmlOutput
TcpOutput
DebuggerOutput (das klassische Debug.WriteLine)
ConsoleOutput
MessageBoxOutput

erstellt und weitere kommen mit Sicherheit hinzu.

Falls jemand also log4net zu kompliziert findet, so etwas ist schnell erstellt.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

225 Beiträge seit 2006
vor 17 Jahren

Falls jemand also log4net zu kompliziert findet, so etwas ist schnell erstellt.

ja. Bloß wie umfangreich und verlässlich das ganze ist hängt dann vom Programmierer ab.

Und ich bin immer froh wenn ich potenzielle Fehlerquellen vermeiden kann.

Wobei grundsätzlich natürlich nichts dagegen spricht sich solche Sachen selber zu schreiben wenn man nur einen Bruchteil der Funktionalität benötigt.

Yunky: was fürn operator muss ich den nehmen wenn ich sagen will nichtgrößergleich??
Yunky: !>3??
Yunky: !≥ ??
Puppetmaster: G
Yunky: aja ka
Puppetmaster: kleiner (<)
Yunky: stimmt^^

2.921 Beiträge seit 2005
vor 17 Jahren

Da das ganze zusammen mit Unit-Tests entwickelt wurde und ich das ganze schon ziemlich extensiv benutze und bisher keine Klasgen kommen, denke ich es läuft perfekt.

Jedesmal wenn etwas neues gebraucht wird, wird es hinzuprogrammiert.

Wenn z.B. per E-Mail mal gewünscht werden sollte.

nur Pseudomäßig:


CEmailOutput:COutput
{
   public CEmailOutput()
 {
 }

  public override Open()
  {
    [...falls was geöffnet werden muss...]
  }
   public override Write(string _sText)
  {
     [..cODE ZUM eMAIL vERSENDEN]
  }

}

fertig. Das geht relativ schnell.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

S
8.746 Beiträge seit 2005
vor 17 Jahren

log4net liebe ich, setze ich auch ein, aber als Umsetzung für eine change-history im DB-Umfeld ist es nicht geeignet. Nicht, dass man damit keine DB-Logs erstellen könnte, aber es fehlen die nötigen Verweise auf die fachlichen Objekte (was man braucht um Anfragen zustellen wie "gib mir alle Änderungen des Preises bei Produkt X zwischen A und B" oder "zeig mir alles was User Y geändert hat") und zudem kann man die Logeinträge nicht mit den fachlichen Transaktionen integrieren.

Eine "change-history" ist Teil des DB-Modell und muss entsprechend gefüllt werden. Dafür gibt es verschiedene Ansätze.