我希望能夠在每個catch塊中進行日誌記錄。像這樣的東西。如何在文件中記錄異常?
catch (Exception exception)
{
Logger.Write(exception);
}
然後配置中的設置將使用客戶偵聽器來獲取Message和StackTrace屬性等。
我想使用企業庫日誌記錄應用程序塊。我肯定有人肯定已經做到了。
我希望能夠在每個catch塊中進行日誌記錄。像這樣的東西。如何在文件中記錄異常?
catch (Exception exception)
{
Logger.Write(exception);
}
然後配置中的設置將使用客戶偵聽器來獲取Message和StackTrace屬性等。
我想使用企業庫日誌記錄應用程序塊。我肯定有人肯定已經做到了。
其他人已經發布了一些關於獲取日誌應用程序塊(LAB)工作的良好鏈接,所以我不會在此重複。
在格式化你的例外條款,你有3個選擇,我能想到的:
Exception.ToString()
實現(這不是壞)如果選項1不符合您的需要,那麼我會建議去選項3(因爲選項2是矯枉過正)。
一個簡單例子是這樣的:
catch (Exception exception)
{
Logger.Write(LogHelper.CreateExceptionString(exception));
}
...
public static string CreateExceptionString(Exception e)
{
StringBuilder sb = new StringBuilder();
CreateExceptionString(sb, e, String.Empty);
return sb.ToString();
}
private static void CreateExceptionString(StringBuilder sb, Exception e, string indent)
{
if (indent == null)
{
indent = String.Empty;
}
else if (indent.Length > 0)
{
sb.AppendFormat("{0}Inner ", indent);
}
sb.AppendFormat("Exception Found:\n{0}Type: {1}", indent, e.GetType().FullName);
sb.AppendFormat("\n{0}Message: {1}", indent, e.Message);
sb.AppendFormat("\n{0}Source: {1}", indent, e.Source);
sb.AppendFormat("\n{0}Stacktrace: {1}", indent, e.StackTrace);
if (e.InnerException != null)
{
sb.Append("\n");
CreateExceptionString(sb, e.InnerException, indent + " ");
}
}
微軟已經在這個位置提供廣泛指導:Developing Applications Using the Logging Application Block
這是很值得與他們說什麼,因爲它是相當強大的熟悉自己。
如果你想要的東西多一點腳踏實地,這篇博客文章中提供了一些工作的例子:How To Configure and Use the Logging Application Block
如果你還在讀那些後遇到問題,有什麼更具體的細節編輯您的帖子似乎是問題所在。
@iSid這就是你所要求的
public static void printException(Exception ex){
Console.WriteLine("HelpLink = {0}", ex.HelpLink);
Console.WriteLine("Message = {0}", ex.Message);
Console.WriteLine("Source = {0}", ex.Source);
Console.WriteLine("StackTrace = {0}", ex.StackTrace);
Console.WriteLine("TargetSite = {0}", ex.TargetSite);
}
包含異常類型的名稱也很有幫助。但其他方面相當不錯。 – 2010-06-07 17:19:01
@Andrew:是的,或者你可以添加一些代碼從Data屬性中提取IDictionary。 – 2010-06-07 18:18:38
[Here](http://www.aspsnippets.com/Articles/Create-simple-Error-Log-Text-File-in-ASPNet-using-C-and-VBNet.aspx)是另一個**解決方案** 。希望有幫助。 – stom 2016-12-21 12:43:02