반응형
웹사이트의 문제가 발생하지 않는 것이 가장 베스트지만 이유 불문하여 알 수 없는 오류, 실수, 잘못된 코딩 등으로 오류가 발생하는 것은 어찌 보면 필연적입니다. 이러한 오류를 캐치하여 오류가 발생할 당시의 데이터의 확인 및 필요시 대응을 하기 위해서 로깅은 합니다.
로깅하는 방법은 필요한 곳에서 직접 로깅하는 등 여러 가지가 있으나 아래 예제는 애플리케이션에서 global.asax 파일의 Application_Error에서 log4net 를 이용한 Exception 로깅 및 처리 방법입니다. http Status 404, 500 등 Application Error 가 발생을 하게 되면 파일에 로깅(및 메일링)을 하도록 합니다.
[asp.net core 로깅 구현 다른글]
[asp.net core 3.1] 파일 로깅 시스템 for SeriLog (세리로그)
[asp.net core 3.1] 파일 로깅 시스템 for nLog(엔로그)
[asp.net core 3.1] 파일 로깅 시스템 for log4net(로그4넷)
먼저 nuget package 에서 log4net 패키지 참조
//Global.asax.cs
protected void Application_Error(object sender, EventArgs e)
{
// Exception 객체 정보를 가져와서 기록을 하게 된다.
Exception ex = Server.GetLastError();
// 서비스 에러 발생시 로깅 및 메일링 프로세스 작성
ILog log = LogManager.GetLogger("RollingError");
log.Fatal(ex.StackTrace + "\r\n");
// 에러 발생시 공통 에러 페이지로 리다이렉트
Response.Redirect("/Exception.aspx", false);
}
//web.config
// configuration 에 log4net 관련 세팅 추가
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<appender name="RollingErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="D:\Log\Error\" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd.'log'" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %5p (%C:%M:%L) - %m%n" />
</layout>
</appender>
<logger name = "RollingError">
<level value="All" />
<appender-ref ref="RollingErrorLogFileAppender" />
</logger>
</log4net>
<configuration>
닷넷 관련 로깅 모듈도 다양해지면서 log4net > Nlog > Serilog 등으로 많이 바뀌어 가고 있네요.
* log4net 참고 : https://logging.apache.org/log4net/
반응형
'dev > asp.net, c#' 카테고리의 다른 글
[asp.net core 3.1] 파일 로깅 for log4net(로그4넷) (0) | 2020.12.04 |
---|---|
[c#] JSON.NET 을 이용한 Json 데이터 파싱 - Json Key Name 가져오기 (JObject, JToken) (0) | 2020.11.27 |
[c#] 숫자 및 날짜 서식 지정 (표준형식, 사용자형식) (0) | 2020.11.17 |
[c#] HttpWebRequest , Expect 헤더 100-Continue 이슈 (0) | 2020.11.11 |
[c# asp.net core 3.1] - gRPC 서버, 클라이언트 샘플 튜토리얼 (1) | 2020.11.06 |