Gewährleistung einer konsistenten englischen Ausnahmeprotokollierung in .NET-Anwendungen
Der Umgang mit Ausnahmemeldungen, die in verschiedenen Clientsprachen (z. B. Türkisch) protokolliert werden, kann das Debuggen erschweren. In diesem Artikel erfahren Sie, wie Sie diese Nachrichten in Ihrer .NET-Anwendung konsistent auf Englisch protokollieren.
Der Ausnahmebehandlungsmechanismus des .NET Framework ruft Fehlermeldungen aus Ressourcendateien basierend auf den Kultureinstellungen des aktuellen Threads ab. Einige Ausnahmen laden diese Nachrichten beim Zugriff auf die Eigenschaft Message
.
Ein gängiger Ansatz, um die englische Nachricht zu erhalten, besteht darin, die Kultur des Threads während der Protokollierung vorübergehend auf „en-US“ umzustellen:
<code class="language-csharp">using System; using System.Globalization; using System.IO; try { StreamReader sr = new StreamReader(@"c:\does-not-exist"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); // Localized message ExceptionLogger el = new ExceptionLogger(ex); Thread t = new Thread(el.DoLog); t.CurrentUICulture = new CultureInfo("en-US"); t.Start(); }</code>
Die ExceptionLogger
-Klasse übernimmt die englischsprachige Protokollierung:
<code class="language-csharp">class ExceptionLogger { Exception _ex; public ExceptionLogger(Exception ex) { _ex = ex; } public void DoLog() { Console.WriteLine(_ex.ToString()); // English message } }</code>
Es ist wichtig zu beachten, dass bei bestimmten Ausnahmen Nachrichtenkomponenten möglicherweise aus Sprachressourcen am Ursprung der Ausnahme geladen werden. Dies kann auch bei dieser Technik zu teilweise lokalisierten Meldungen führen.
Für eine vollständige Kontrolle sollten Sie erwägen, den gesamten Nicht-UI-Code in einem Thread auszuführen, der vom Start der Anwendung an mit der Kultur „en-US“ konfiguriert ist. Das .NET Framework unterstützt jedoch nicht direkt das Überschreiben des Gebietsschemas der Ausnahmemeldung.
Das obige ist der detaillierte Inhalt vonWie kann ich Ausnahmemeldungen in einer .NET-Anwendung konsistent auf Englisch protokollieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!