20220914 Dotnet Windows Logging
.net 개발 로깅
닷넷은 어떻게 로깅하여야 할까
1. 윈도우 이벤트로그에 로깅
애플리케이션의 로그를 윈도우의 이벤트로그(EventLog)로 던지는 방법. 이렇게 쌓은 로그는 IIS가 돌아가는 서버의 이벤트 뷰어에서 확인할 수 있다.
사용 방법
이벤트 소스 등록과 실제 로그 쓰기 두 단계로 나눌 수 있다. 1) 소스 등록 : 이 이벤트로그를 누가 썼는지 식별하는 구분자를 OS에 등록. 소스 이름은 애플리케이션명 등으로 등록한다. 소스 이름을 이용하여 이미 등록된 식별자인지 판단이 가능하며, 서버마다 1회씩만 등록하면 된다. 2) 로그 쓰기 : 애플리케이션에서 발생하는 로그를 실제로 쌓는다. 다른 로그들과 같이 레벨 등을 설정가능하며(info/error...) 미리 등록된 소스 이름을 함께 사용한다.
예제
using System;using System.Diagnostics;...// 1. 이벤트 소스 생성. 이벤트 소스가 없으면 신규생성한다.string sourceName = "MyApp"; //이벤트 뷰어의 "원본"에 적히는 문구. 위 이미지의 붉은색 박스if(!EventLog.SourceExists(sourceName)){//이벤없으면 신규 생성한다.//OS에 종속적이므로, 프로그램이 해당 서버에서 한번 실행되면 이 로직을 두번 타지는 않는다.string logName = "Application";//로그 이름. 이벤트 뷰어>Windows 로그>응용 프로그램 아래에서 로그를 보고 싶으면 해당 부분을 Application으로 고정한다.EventLog.CreateEventSource(sourceNAme, logName);}// 2. 로그 쓰기EventLog myLog = new EventLog();myLog.Source = sourceName;myLog.WriteEntry("정보! 이벤트 로그를 남긴다.", EventLogEntryType.Information);myLog.WriteEntry("경고! 이렇게 한번 더 남긴다!", EventLogEntryType.Warning);/*EventLogEntryType :https://docs.microsoft.com/ko-kr/dotnet/api/system.diagnostics.eventlogentrytype?view=dotnet-plat-ext-6.0*/
dotnet core
.net core의 경우 System.Diagnostics사용이 불가하며, EventLog를 사용하기 위하여 별도의 nuget 패키지를 설치하여야 한다.
Install-Package Microsoft.Extensions.Logging.EventLog
참조
EventLog