| 

.NET C# Java Javascript Exception

2
Abend,

ich nutze gerade mal die Halbzeit und stelle mal meine Problematik in den Raum.
Gibt es für C# Klassen oder Ansätze für ein Loggingsystem, das Fehler protokolliert und dann in einer Datei speichert?

Ansonsten eine Frage zur Realisierung:
Muss ich in der Catch Anweisung dann auf mein Loggingsystem zugreifen und den Fehler protokollieren?
try{
//Irgendeine Anweisung
}
catch(Exception ex){
Logge(ex.ToString);//Übergebe den Fehler an das Logging-System
}


Ich denke mal solch ein System macht schon Sinn und ist auf jedenfall hilfreich um Fehler bei Anwendern zu finden, die nicht gerade mal das Programm Debuggen können ;)
Ist es jetzt notwendig oder sinnvoll eine ganze Klasse zu schreiben, die ich dann transparent einsetzen kann oder jeweils eine für das Programm spezifische?(Also oben reingequetscht)

Weil ich bin mir jetzt nicht so sicher wie groß das wird...
Eventuell müsste man die Fehler im System auch noch mal analysieren usw.
Ich bin gerade auch nicht ganz bei der Sache(etwas müde), deswegen stelle ich die Frage auch mal in den Raum.

mfg
Seppel
31.03.2010
Seppel 23 3
2 Antworten
1
Also man muss beim Thema Logging ein bischen unterscheiden:
1) Programm-Ablaufverfolgung
2) Logging von behandelten Fehlern (UI gibt Nutzer Hinweis)
3) Logging von fatalen Fehlern

Die ersten beiden Punkte werden eigentlich nur wichtig, wenn der dritte Fall eintritt.
Dann muss man nämlich anhand von Logfiles versuchen den Fehler zu reproduzieren und zu beheben.
Das heisst in der Praxis, dass bei 1) und 2) 'nur' Einzeiler im Log generiert werden, während 3) einen detaillierteren Eintrag mit z.B. Stacktrace und Argumenten erzeugt. Man kann für 3) auch einen 'Crash-Report' generieren, der den gesamten Programmstatus enthält.

Für die ersten beiden Punkte gibt es fertige Lösungen (z.B. log4net), ein Logger ist aber wirklich nicht sooo kompliziert zu schreiben, also kannst Du das auch selber machen. Ich nutze in verschiedenen Projekten immer dieseble Klasse und passe sie den dann doch immer leicht unterschiedlichen Anforderungen an. Also Copy+Paste Code, keine Assembly Referenz.
Aber das ist Geschmackssache :)

Für 'Crash-Dump' Erstellung wüsste ich nix.
Ich persönlich schreibe eine Try-Catch um die Application.Run Anweisung und logge dann die gefangene Exception mit Stacktrace und allen Argumenten an die ich herankommen kann.
Erfahrungsgemäß sind die Kunden, bei denen die Programme laufen auch nicht immer in der Lage, mehr als ein Logfile zu finden und zu verschicken ;)
01.04.2010
DaSpors 4,2k 2 8
1
Ich hab log4net so eingestellt, das ich bei Fehlern eine E-Mail zugesendet bekomme. Die Log-Files brauch ich also nur für Info- und Debug-Ausgaben. Ich finde log4net auch sehr schön, schade nur das es nicht mehr gepflegt wird. "Last Published: 05/01/2008"
Floyd 01.04.2010
Hier noch ein Tutorial zu log4net: http://www.codeproject.com/KB/dotnet/Log4net_Tutorial.aspx

Die Kritik, dass daran nicht mehr viel gemacht wird kann ich nicht unbedingt verstehen. Denn 1. hat log4net schon einen sehr hohen Funktionsumfang und 2. funktioniert es tadellos. Warum also etwas dran ändern?
Hendrik Lösch 02.03.2011
0
Danke für die Antwort hat mir sehr geholfen!
Ich werde das für den Kunden vollautomatisch gestalten(zmd. ist das die Theorie), aber erst mal muss ich natürlich das Loggingsystem bauen.

Frage beantwortet.
01.04.2010
Seppel 23 3

Stelle deine Logging-Frage jetzt!