Protokollierung in einer Winform-Anwendung
Ausgangssituation: Es ist ein großer Winform-Anwendung mit vielen Dialogen und einer Oracle-Datenbank im hintergrund. Nun gibt es die Anforderung zur Umsetzung einer audit-logging-Funktion, welche Daten protokolliert änderungen (vor/nach) durch den Benutzer (für spätere Prüfungen durch die audit-Abteilungen der Unternehmen) in einigen Dialogen. Wie würden Sie sich integrieren, wie eine logging-Funktion? Durch die Möglichkeit, die log-Informationen werden in der Datenbank gespeichert (history-Tabelle) und der admin-Anwendung an der Windows forms-Lösung sollte eine browser-dialog für die Protokollierung von Daten.
Gibt es bestehende Lösungen oder frameworks, die verwendet werden können. Macht es Sinn, ein logging-framework wie NLOG in diesem Fall oder ist es besser, zur Umsetzung eines solchen spezifischen Protokollierung von Grund auf neu?
- Sie können versuchen, Log4net oder Microsoft Logging Application Block.
- Ich persönlich log4net eingewickelt mit meinem eigenen, spezifischen code, reduziert die Anzahl der Linien, die es braucht, um eine Nachricht zu protokollieren. Mein code sieht der Benutzer eingeloggt ist, und fügt einige andere Allgemeine info, die sinnvoll für meine Anwendung. Mit einigen sorgfältige Einrichtung arbeiten, die Sie nicht verlieren log4net ist eine fein abgestimmte Kontrolle über die Protokollierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellte ich eine ziemlich einfache statische Klasse namens Logger, der einfach eine Methode, die einen string und speichert die aktuellen DateTime mit einem StreamWriter. Ich Schreibe gerne meine eigenen Protokolle, weil es mir erlaubt, um die Ausgabe zu formatieren, wie ich will. Hier ist ein kurzes Beispiel, was mir aussieht :
Müssen Sie stellen Sie sicher, zu fangen, die entsprechenden Ausnahmen und die close-Methode aufrufen, wenn Ihr Formular wird geschlossen. Wieder, ich mag es, weil es einfach ist und ich kann formatieren wie ich es mag. Ich habe auch gesehen, wo Leute schreiben, wo whitespace generiert wird, von bestimmten Suchbegriffen in die Zeile auf dem Sie sich anmelden. Nur ein Vorschlag, es gibt so viele Möglichkeiten.
Haben Sie mehrere Optionen für die, und keine sind system-level-Protokollierung, einige sind darauf hindeutet.
Optionen:
Jede option hat Ihre Vorteile und Nachteile, so versuchen zu lernen, so viel wie Sie können, bevor springen in jede Richtung.
EDIT:
WARUM Sie nicht brauchen, Nlog oder log4net
Brauchen Sie Sie nicht, weil aus der Frage es ist offensichtlich, dass Sie müssen die Daten über die ausgeführten Transaktionen in der Datenbank. Natürlich, dass beide logging-frameworks werden in der Lage, um die Daten in die Datenbank, aber es wird viele zusätzliche Schritte, um erste format der Daten für die Datenbank, dann von formatierten Daten extrahieren nützliche Informationen über Personen, die daran beteiligt waren, die in der Transaktion und so weiter.
Viele Menschen ignorieren die Tatsache, dass .NET hat ein ziemlich leistungsfähiges logging-system gebaut mit dem Trace-Klasse. Das nette Teil ist, können Sie es sofort verwenden, ohne setup, Nachrichten in Ihrem debug-Fenster, und wenn Sie wirklich brauchen, log-Dateien, können Sie festlegen, bis Trace-Listener.
Wenn Sie sich einloggen möchten datachanges (auf eine Datenbank) sollten Sie die log-Funktionen der Datenbank (mit gespeicherten Prozedur, einem trigger und je nach Datenbank-Produkt-built-in-Funktionalität, wie SQL Server Change Data Capture), weil die meisten der Zeit, die Sie wollen, um das Ereignis anmelden, unabhängig von der Anwendung/des Prozesses (Winforms-Anwendung, Website, Datenbank-management-software), die es auslösen.
Wollen Sie nicht (oder zu vergeben), zu erstellen Sie Ihre log-Funktionalität auf die nächsten neuen client-Anwendung.
Verwenden Sie die application-log-system, wenn Sie wollen trace-Ereignis über die Anwendung zu verwenden (crash, klicken Sie auf eine Taste, start-Zeit,...)
Zugang zu den log-und machen es menschlich lesbar ist eine andere Geschichte.