Hallo,
ich habe die Suchfunktion schon bemüh, habe jedoch nichs passendes finden können.
Ich möchte bei Exceptions die Fehlermeldung in einer errlog.txt umleiten. Dort soll dann die ex.message vorhanden sein, der user, der hostname, datum und, was ich nicht weiß wo ich das in ex finde, Methode, File und Zeile wo die Exception ausgelöst wurde.
wenn ich mit ex.ToString(9 ausgeben lasse, kommt folgendes:> Fehlermeldung:
...
...
bei System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
bei System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
bei System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
bei System.Data.SqlClient.SqlConnection.Open()
bei SMT_JEDEC.station.get_ruestungsnummer() in C:\c#_projekte\SMT-JEDEC\SMT-JEDEC\station.cs:Zeile 314
Genau die letzte Zeile in der Ausgabe würde ich gern in die errorlog.txt speichern.
Habe auch schon in ex.getType() gesucht, aber dort finde ich wohl nicht die entsprechenden Eigenschaften etc., die ich dafür benötige.
Für einen Hinweis wäre ich dankbar.
Wenn nicht nehme ich einfach ex.ToString() und hole mir die letzte Zeile raus. Aber sollte doch auch anderes gehn?
Danke.
Gruß Gustl
Das das Dingens "StackTrace" heißt, solltest du eigentlich wissen. Und mit diesem Stichwort kommt man dann auch zur Lösung:
StackTrace stackTrace = new StackTrace(exception,true);
if (stackTrace.FrameCount>0)
{
StackFrame stackFrame = stackTrace.GetFrame(stackTrace.FrameCount-1);
string fileName = stackFrame.GetFileName();
int lineNumber = stackFrame.GetFileLineNumber();
}
Hallo!
Die von dN!3L genannten Methoden im StackFrame geben allerdings nur im Debug-Mode bzw. wenn die passende dbg-Datei vorhanden ist, die genauen Informationen zurück.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Hallo C#Gustl,
ich würde hier auf A Tracing Primer - Part I setzen, dort kann mittels Konfiguration das von dir gewünschte erreicht werden.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Hallo Gustl,
Du kannst einstellen dass "Release" auch eine PDB-Datei erzeugt, mit Zeilennummern, ohne Sourcecode. Dann bekommst Du auch bei einem Kunden mit Releaseversion die Zeilennummer im Stack angezeigt.
Es lohnt sich mehrere Stackeinträge ins Log zu schreiben, da nicht immer die untere Zeile die notwendige Information enthält.
Falls vorhanden auch die Inner.Exception mitloggen.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3