웹 응용 프로그램 프로젝트에서 작업하고 있습니다. 응용 프로그램에는 페이지에서 사용자를 동일한 페이지로 다시 리디렉션하는 단일 단추가 있어야합니다. 버튼을 누를 때마다 매 5 분의 1 (또는 그 부근)에서 프로그램이 예외를 던져서 기록해야합니다.로깅 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
}
}
}
내가 구현하려고하는 것은 무엇입니까? 나는 특히 try catch에 회의적입니다. 이 세 가지 인스턴스를 반복하는 가장 좋은 방법은 무엇입니까?
로그 미디어에 적합한 등급 결정법이 있습니다. 즉, 각 인스턴스에 대해 LogMedia를 상속하는 새 클래스를 만들고 LogMedia의 가상 함수를 재정의하는 함수를 만들어야합니다.
앱은 한 가지만 수행해야하므로 기본적으로 전체 앱에 컨트롤러가 하나만 있습니다. 이것은 학교를위한 프로젝트이며 강사는 내가 게시 한 것과 비슷한 클래스 구조를 시도하고 잡아서 사용하도록 권장했습니다. 나는 우리가 기존의 프레임 워크를 사용하지 않고 우리 자신을 구현할 것으로 생각한다. – user3265963
업데이트 된 응답을 위해 edit2를 참조하라. – maf748