我正在開發一個Web應用程序。應用程序應該在頁面上有一個按鈕,將用戶重定向回同一頁面。在每5(或大約)場合中,當你按下按鈕時,程序應該拋出一些異常並記錄下來。日誌記錄Visual Studio MVC5
它應該捕獲異常並做三件事:發送電子郵件,將錯誤寫入文件並將其寫入調試窗口。
我至今控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
try
{
RedirectToAction("Index");
}
catch (ArgumentException e)
{
}
Random RandNumber = new Random();
int rand = RandNumber.Next(1000);
if(rand % 5 == 0)
{
throw new System.ArgumentException("This is a random excpetion");
}
return View();
}
}
的想法是有記錄器類聲明的類LogMedia的集合,並通過所有實例循環。
類記錄儀:
public class Logger
{
List<LogMedia> m_loggers = new List<LogMedia>();
void LogException(Exception ex)
{
foreach(var i in m_loggers)
{
//Loop through all Log Media instances
}
}
類LogMedia
class LogMedia
{
public virtual void LogMessage(string Message); //virtual function that doesen't do anything
}
class OutputWindowLogMedia:LogMedia
{
public override void LogMessage(string Message)
{
System.Diagnostics.Debug.WriteLine(Message);
}
}
class TextFileLogMedia : LogMedia
{
public override void LogMessage(string Message)
{
File.AppendAllText("c:\\Temp\\Log.txt", Message);
}
}
class EmailLogMedia : LogMedia
{
public override void LogMessage(string Message)
{
//send email
}
}
}
我的問題,你有以下幾種:
請問我的控制器的工作,因爲它與現在站立我正在嘗試實施什麼?我特別懷疑我的嘗試抓住..
什麼是循環這三個實例的最佳方法?
我是否有適合日誌介質的類別降級,即是否應該爲每個實例創建新類(繼承LogMedia),然後重寫LogMedia中的虛函數。
該應用程序應該只做一件事,所以基本上我只有一個控制器在整個應用程序。這是一個針對學校的項目,教師建議使用try和catch,並實現類似於我發佈的類結構。我不認爲我們會使用現有的框架,而是實施我們自己的 – user3265963
請參閱edit2獲取更新的響應。 – maf748