ASP.NET에서 예외 처리 로그를 출력하게 하는 것을 구현


LogMgr 클래스 만들기

public class LogMgr

{

static string prefixMsg = "\r\n-------------------------------------------";


// 일반 로그 남기기

static public void Log(string msg)

{

try

{

string logFileName = DateTime.Now.ToString("yyyy-MM-dd") + ".log";

StreamWriter tw = File.AppendText(logFileName);

tw.WriteLine(prefixMsg);

tw.WriteLine(msg);

tw.Close();

}

catch (Exception)

{

}

}


// 예외 로그

static public void ExceptionLog(Exception ex, string titleString = null)

{

string msg = "";

if (!string.IsNullOrEmpty(msg))

{

msg = titleString + "\r\n";

}


msg += GetExceptionMessage(ex);

msg = "예외 발생 일자 : " + DateTime.Now.ToString() + msg + "\r\n";

Log(msg);

}

// 마지막 예외 로그

static public void LastExceptionLog(string titleString = null)

{

//예외를 데이터베이스나 파일에 로깅한다

Exception ex = HttpContext.Current.Server.GetLastError();

ExceptionLog(ex, titleString);

}



// 예외 메세지 만들기

static private string GetExceptionMessage(Exception ex)

{

string err = "\r\n 에러 발생 원인 : " + ex.Source +

"\r\n 에러 메시지 :" + ex.Message +

"\r\n Stack Trace : " + ex.StackTrace.ToString();


if (ex.InnerException != null)

{

err += GetExceptionMessage(ex.InnerException);

}


return err;

}

}


사용)

Global.asax 파일에 전역 예외처리 로그 작성(try catch 잡지 않은 예외를 로그파일에 출력)

public class Global : System.Web.HttpApplication

{


...

...

protected void Application_Error(object sender, EventArgs e)

{

// 예외 처리구간에서 예외가 나왔을때는 예외처리를 하지 않는다.

try

{

LogMgr.LastExceptionLog("Application_Error");

}

catch(Exception)

{

}

}

}


try catch 예외 처리 로그로 사용.

DBConn conn = new DBConn();

try

{

conn.Open();

conn.CreateCommand(sql);

conn.AddParam("@USER_CODE", userName);


SqlDataReader reader = conn.ExecuteReader();


if (reader.Read())

{

playername = reader["USER_NAME"].ToString();

ret = true;

}

}

catch (Exception e)

{

LogMgr.ExceptionLog(e);

}

finally

{

conn.Close();

}

return ret;


일반 로그로 사용.

LogMgr.Log("하이 로그 테스트");


+ Recent posts