.NET アプリケーションでの一貫した英語例外ログの確保
さまざまなクライアント言語 (トルコ語など) で記録された例外メッセージを処理すると、デバッグが複雑になる可能性があります。この記事では、.NET アプリケーション内でこれらのメッセージを英語で一貫して記録する方法について詳しく説明します。
.NET Framework の例外処理メカニズムは、現在のスレッドのカルチャ設定に基づいてリソース ファイルからエラー メッセージを取得します。 一部の例外は、Message
プロパティへのアクセス時にこれらのメッセージを読み込みます。
英語のメッセージを取得する一般的なアプローチには、ログ記録中にスレッドのカルチャを一時的に「en-US」に切り替えることが含まれます。
<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>
ExceptionLogger
クラスは英語のログを処理します。
<code class="language-csharp">class ExceptionLogger { Exception _ex; public ExceptionLogger(Exception ex) { _ex = ex; } public void DoLog() { Console.WriteLine(_ex.ToString()); // English message } }</code>
特定の例外では、メッセージ コンポーネントが例外の発生元の言語リソースからロードされる可能性があることに注意することが重要です。 これにより、この手法を使用した場合でもメッセージが部分的にローカライズされる可能性があります。
完全に制御するには、アプリケーションの開始時から「en-US」カルチャで構成されたスレッド内ですべての非 UI コードを実行することを検討してください。 ただし、.NET Framework は、例外メッセージのロケールのオーバーライドを直接サポートしていません。
以上が.NET アプリケーションで例外メッセージを英語で一貫して記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。