エンタープライズ ライブラリでは、ログに十分な詳細が記録されていなかったので、例外固有のプロパティを取り出してメッセージ文字列に追加するために、このハンドラーを書き始めました。
[ConfigurationElementType(typeof(CustomHandlerData))]
public class ExposeDetailExceptionHandler : IExceptionHandler
{
public Exception HandleException(Exception exception, Guid handlingInstanceId)
{
if (exception is System.Net.WebException)
return ExposeDetail((System.Net.WebException)exception);
if (exception is System.Web.Services.Protocols.SoapException)
return ExposeDetail((System.Web.Services.Protocols.SoapException)exception);
return exception;
}
private Exception ExposeDetail(System.Net.WebException Exception)
{
string details = "";
details += "System.Net.WebException: " + Exception.Message + Environment.NewLine;
details += "Status: " + Exception.Status.ToString() + Environment.NewLine;
return new Exception(details, Exception);
}
private Exception ExposeDetail(System.Web.Services.Protocols.SoapException Exception)
{
//etc
}
}
(余談ですが、ExposeDetail のどのバージョンを実行するかを選択するより良い方法はありますか?)
これは、これらの詳細をログに記録するための最良の方法または受け入れられている方法ですか。