LOG4NET 사용법
Visual Studio 2017
Windows Form Project
로깅은 모든 개발의 필수라고 할 수 있습니다.
개발할때는 디버깅툴을 사용한다고 해도 로그를 찍어야 편하고,
프로그램을 릴리즈 해서 사용자가 사용하게 되면 버그를 잡을때 꼭 필요한게 로그 입니다.
아파치의 log4net 의 사용법을 알아보겠습니다.
일단 테스트할 프로젝트를 생성합니다.
[파일] -> [새로만들기] -> [프로젝트] 클릭
Visual C# 에서 Windows Forms 앱(.NET Framework) 를 선택하고 이름을 입력합니다.
Windows form 이 생성됩니다.
일단 NuGet 패키지 관리자에서 Log4net 을 검색하여 설치합니다.
예전에는 log4net.dll 을 다운로드 받아 참조에서 추가시켜줬는데 ( 지금도 가능한 방법 이지만 ) NuGet 이란게 있어서 편하게 사용할 수 있습니다.
NuGet 패키지 관리자를 실행합니다.
우측 솔루션에서 우클릭 -> NeGet 패키지 관리 클릭
찾아보기 탭에서 log4net 을 입력하면, 조회결과에 log4net 이 나옵니다.
항목 우측의 아래화살표 버튼을 누르면 현재 프로젝트에 추가됩니다.
참조에 log4net.dll 이 추가되어있을 겁니다.
그리고나서 form 의 가운데 부분을 더블클릭합니다.
참고
Form 더블클릭 -> Form_Load 함수를 생성합니다
Button 더블클릭 -> Button_Click 함수를 생성합니다.
아래의 위치에 소스를 입력합니다.
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Form1));
// GetLooger 의 파라메터인 typeof(Form1) 은 현재 클래스를 넣어줍니다.
// 전역 변수로 입력해줍니다.
// 초기화 함수(public Form1())에 넣어줍니다.
XmlConfigurator.Configure(new FileInfo("log4net.xml"));
// 오류가 발생하는데 마우스를 가져대거나 alt+enter 를 치면 using log4net.Config; 를 선택해줍니다.
// 마찬가지로 FileInfo 도 using 을 추가해 오류가 나지않게 합니다.
소스를 보면 log4net.xml 이 보입니다. 파일을 넣어줘야겠죠.
이 파일을 다운로드 해서, 복사한 다음 프로젝트를 한번 클릭하고 붙혀넣기를 합니다.
여기서 주의 : 위에서 FileInfo("log4net.xml") 이라고 했으니 실행 경로위치에 저 파일이 있어야 합니다.
디버그 모드로 실행하면 Debug 폴더, 릴리즈 모드로 실행하면 Release 폴더에 log4net.xml 이 있어야 하겠죠.
실행할때 각각 폴더로 자동 복사하려면 아래와 같이 log4net.xml 파일에서 우클릭하여 속성으로 들어가 출력디렉터리에 복사 옵션을 선택합니다.
Form Load 할때 호출되는 Form_Load 메소드에 로그를 찍게 해봅니다.
private void Form1_Load(object sender, EventArgs e)
{
log.Debug("Form1 Loaded Complete~!");
}
그리고 F5 를 누르거나 시작 버튼을 누릅니다.
그럼 프로그램이 실행될겁니다.
Form이 뜨면 그냥 닫습니다. Load 가 되었으니 로그를 확인해봐야겠죠.
솔루션이나 프로젝트에서 우클릭 -> 파일탐색기에서 폴더열기
Debug 로 실행했으니 Debug > logs 폴더가 있고 그 아래 log 파일이 생겼습니다.
그리고 그 내용은 텍스트 에디터로 확인할 수 있습니다.
사용 가능한 로그 Level 은 아래와 같습니다.
- log.Debug("debug~");
- log.Info("info~");
- log.Warn("warn~");
- log.Error("error~");
- log.Fatal("fatal~");
log4net.xml 에 로그 래밸을 설정하면 그보다 중요한 로그는 다 쓰도록 됩니다.
중요도 : ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
ALL 이면 모두 로깅. OFF 면 로그 출력 안함. WARN 이면 WARN,ERROR,FATAL 만 출력.
예를들면 log level 을 ERROR 로 해뒀다면, 소스에서 log.Debug("디버그입니다."); 라고 되어있는것은 로그에 남지 않습니다.
개발은 Debug 로 하고, 배포할땐 초기엔 Info 정도로 하고, 프로그램이 문제없이 잘 돌아간다고 하면 ERROR 로 설정해두면 되겠죠? (개인적인 생각)
log4net.xml 의 내용에 괸련해서 자세한 설명은 나중에 포스팅 하겠습니다.
2019/01/10 - [C#] - Visual Studio Build Environmant, 빌드 환경 변수 설정
2019/01/06 - [Tensorflow] - window python install, 윈도우 파이선 설치
'C# 기술' 카테고리의 다른 글
C# try catch finally 제대로 쓰기 (0) | 2019.01.20 |
---|---|
DataTable VS Dictionary 검색 속도 차이 (2) | 2019.01.19 |
TextBox 숫자만 입력 ( Windows Form C# ) (0) | 2019.01.19 |
폴더 모니터링. Directory Watcher (0) | 2019.01.14 |
Visual Studio Build Environmant, 빌드 환경 변수 설정 (0) | 2019.01.10 |
댓글